> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kasoftware.com/llms.txt
> Use this file to discover all available pages before exploring further.

# TCP Server 端口

> 託管通用 TCP/IP 端點，用於接收任意資料流，支援可配置的訊息分隔、TLS/SSL 及雙向通訊。

TCP Server 端口支援託管通用介面，透過 TCP 接收任意資料。

## 核心功能

* 通用 TCP/IP 伺服器端點，支援 TLS/SSL 和明文傳輸，適用於任意資料流
* 可配置的訊息分隔，支援使用靜態分隔符號或基於長度的解析
* 具備雙向通訊能力，支援基於連線 ID 的路由和連線事件訊息

## 概觀

每個 TCP Server 端口都會在指定的端口上監聽傳入的 TCP 流量，可以是 TLS/SSL 加密，也可以是純文字。該端口適用於 知行之橋 需要接收不一定符合其它標準協議提供的約束的任意資料時的情況。

由於 TCP 流量是一個恆定的流，本質上沒有"開始"或"結束"點，因此必須對端口進行配置，以確定一個訊息的結束點和下一個訊息的開始點。端口支援兩種方法：

* 一個靜態的字串/字元分隔符號，用於結束當前訊息或開始下一個訊息。
* 讀取傳入的 TCP 資料中的一個值，以確定資訊的長度。

對於第二種方式，端口需要一個偏移量（從第一個位元組後多少個位元組開始讀取訊息長度）和一個大小（從偏移量開始讀取長度值，要讀取多少個位元組）。如果訊息的長度是訊息的"頭"中的第一個值，那麼偏移量應該是 0。

一旦達到分隔符號或長度，端口將向 知行之橋 工作流程推送包含透過 TCP 接收的原始資料的訊息。

TCP Server 端口還可以在用戶端連線或斷開連線時生成 知行之橋 訊息，以提醒工作流程中的其它處理程序。更多資訊可參見[連線和斷開訊息](#連線和斷開訊息)部分。

有關向 TCP 用戶端傳送回應的資訊，請參見[傳送訊息](#傳送訊息)部分。

## 端口配置

### 設定索引標籤

#### 配置

*與端口關鍵配置有關的設定。*

| 設定 | 說明 |
| - | - |
| **端口 ID** | 端口的靜態唯一識別碼。 |
| **端口型別** | 顯示端口名稱及其功能描述。 |
| **端口描述** | 可選欄位，用於自由填寫端口的描述及其在工作流程中的作用。 |
| **端口** | 監聽傳入 TCP 連線的端口。 |
| **伺服器狀態** | 端口伺服器的狀態：**活動**（伺服器正在執行；點選**停止伺服器**可將其停止）或**非活動**（伺服器未執行；點選**啟動伺服器**可將其啟動）。要檢視伺服器執行期間生成的日誌，請參閱[日誌索引標籤](#日誌索引標籤)。 |

#### 訊息解碼

*與區分 TCP 流中的單個訊息有關的設定。*

| 設定 | 說明 |
| - | - |
| **訊息起始分隔符號** | 表示新訊息開始的單個字元或十六進位值（以 `0x` 為字首）。 |
| **訊息結束分隔符號** | 表示當前訊息結束的單個字元或十六進位值（以 `0x` 為字首）。 |
| **訊息長度偏移** | 從接收的資料中開始讀取資訊長度之前要跳過的位元組數。 |
| **訊息長度大小** | 傳入資料中長度值的大小（以位元組為單位）。 |

#### TLS 設定

*與 TLS/SSL 傳輸安全相關的設定。*

| 設定 | 說明 |
| - | - |
| **啟用 TLS** | 用戶端是否必須協商 TLS/SSL 加密才能連線到 TCP Server。 |
| **伺服器憑證** | 標識 TCP Server 的 TLS/SSL 憑證。 |
| **憑證密碼** | 存取伺服器憑證私密金鑰的密碼。 |

### 進階設定索引標籤

#### 保持活動

*與伺服器傳送 keep-alive 資料包以保持空閒連線有關的設定。*

| 設定 | 說明 |
| - | - |
| **保持活動** | 是否定期傳送 keep-alive 資料包，以確保空閒連線不會因不活躍而關閉。 |
| **Keep Alive 時間** | 在傳送第一個 keep-alive 資料包之前的空閒時間長度。 |
| **Keep Alive 間隔** | 連續的 keep-alive 資料包之間的間隔。 |

#### 進階設定

*先前目錄中未包含的設定。*

| 設定 | 說明 |
| - | - |
| **連線訊息** | 端口是否應該在用戶端連線時生成 知行之橋 訊息。詳見[連線和斷開訊息](#連線和斷開訊息)部分。 |
| **斷開訊息** | 端口是否應該在用戶端斷開連線時生成 知行之橋 訊息。詳見[連線和斷開訊息](#連線和斷開訊息)部分。 |
| **空閒時間** | 伺服器在因空閒而斷開連線之前，等待空閒用戶端的時間長度（秒）。 |
| **本地檔案命名方案** | 為端口輸出的訊息分配檔名的方案。您可以在檔名中動態使用宏，以包含識別碼和時間戳等資訊。詳見[宏](#宏)。 |
| **本機主機** | 本地伺服器的繫結地址（如果不是預設網路介面）。 |
| **最大連線** | 並行端口的最大數量。 |
| **TLS 啟用的協議** | 建立傳出連線時支援的 TLS/SSL 協議清單。最佳實踐是僅使用 TLS 協議。SSL v2 和 SSL v3 被認為存在漏洞，僅在您的合作伙伴不支援更高版本時使用。請注意，TLS v1.3 未被廣泛採用，如果目標伺服器不支援，可能會被拒絕。 |

#### 訊息

*訊息設定確定端口如何搜尋訊息並在處理後管理它們。*

**注意：**以下設定已棄用，預設處於隱藏狀態。只有先前已啟用這些設定或將其配置為非預設值的端口才會顯示它們。若要保留成功處理的檔案副本，請在工作流程中右鍵單擊該端口，選擇**顯示成功路徑**，然後將成功路徑連線到 [File 端口](https://docs.kasoftware.com/26.4/self-hosted/zh/connectors/file.md)。

<table><thead><tr><th>設定</th><th>描述</th></tr></thead>
<tbody><tr><td>**儲存到已傳送資料夾**（已棄用）</td>
<td>將端口處理的檔案複製到 Sent 資料夾。預設停用。儲存到 Sent 資料夾中的檔案不受[靜態加密](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/encryption-at-rest.md)保護。</td></tr>
<tr><td>**已傳送資料夾方案**（已棄用）</td>
<td>按所選時間間隔對 **Sent** 資料夾中的檔案進行分組。僅在啟用**儲存到已傳送資料夾**時適用。</td></tr></tbody></table>

#### 日誌

*用於管理日誌建立和儲存的設定。*

<table><thead><tr><th>設定</th>
<th>描述</th></tr></thead>
<tbody><tr><td>**日誌級別**</td>
<td>指定要記錄在端口日誌目錄中的資訊型別：
<ul><li>**None** - 不建立任何日誌。</li>
<li>**Error** - 僅當端口遇到錯誤時才建立日誌。</li>
<li>**Warning** - 僅當端口發出警告時才建立日誌。</li>
<li>**Info** - 記錄工作流程的一般資訊，包括任何錯誤和警告（如果適用）。</li>
<li>**Debug** - 記錄成功和失敗工作流程的詳細偵錯資訊。</li>
<li>**Trace** - 記錄成功和失敗工作流程的詳細跟蹤資訊。</li></ul>
\*\*請注意：\*\***Debug** 和 **Trace** 級別的日誌可能會記錄敏感資訊，包括訊息內容和 SSL 憑證。儘管連線屬性（例如密碼）被遮蔽了，但在與您的組織外部共享它們之前，請檢視此級別的日誌以避免洩漏敏感資訊。</td></tr>
<tr><td>**日誌資料夾結構**</td>
<td>指示端口根據選定的時間間隔將日誌資料夾中的檔案分組。例如，**Weekly** 選項指示端口每週建立一個新的子資料夾，並將該周的所有日誌儲存在該資料夾中。空白設定告訴端口將所有日誌直接儲存在日誌資料夾中。對於處理許多交易的端口，使用子資料夾有助於保持日誌的有序性並提高效能。</td></tr>
<tr><td>**保留訊息副本**</td>
<td>指示端口在日誌目錄中儲存最新訊息副本的切換。請注意，端口每個子資料夾只保留一個訊息，並且端口在再次執行時會覆蓋以前儲存的訊息。</td></tr></tbody></table>

#### 雜項設定

*特殊設定適用於特定用例。*

<table><thead><tr><th>設定</th>
<th>描述</th></tr></thead>
<tbody><tr><td>**其他設定**</td>
<td>允許在以分號分隔的清單中配置隱藏的端口設定，例如 `setting1=value1;setting2=value2`。正常的端口用例和功能不需要使用這些設定。</td></tr></tbody></table>

### 伺服器索引標籤

#### 受信任的 IP 地址

**可信 IP 地址** 部分提供以下功能：

<table><thead><tr><th>功能</th><th>描述</th></tr></thead>
<tbody><tr><td>**新增**</td><td>輸入新的 IP 地址範圍。</td></tr>
<tr><td>**編輯**</td><td>修改選定的 IP 地址範圍。</td></tr>
<tr><td>**刪除**</td><td>從清單中刪除選定的 IP 地址範圍。</td></tr></tbody></table>

以下限制適用於此功能：

<ul><li>`localhost` 不能被修改或從清單中刪除。</li>
<li>任何超出定義範圍的 IP 地址都將被拒絕。</li>
<li>支援 IP 範圍。例如，項目 `100.10.100.1-15` 表示允許 `100.10.100.1` 和 `100.10.100.15` 之間的 IP 地址。</li>
<li>支援無類別域間路由 (CIDR) 表示法。例如，項目 `100.10.100.0/24` 表示允許 `100.10.100.0` 和 `100.10.100.255` 之間的 IP 地址。</li>
<li>支援萬用字元模式。例如，項目 `100.10.100.*` 表示允許以 `100.10.100` 開頭的 IP 地址。</li></ul>

> [!NOTE]
>
> 為了讓用戶端能夠存取伺服器，需要有清晰的網路路徑。在雲環境中，可能需要在三個地方進行更改：
>
> • 雲控制檯中的網路規則。
>
> • 託管應用程式的機器上的防火牆規則。例如，在使用 Amazon AMI 時，可以使用 *簡單防火牆*（UFW）來允許所需端口上的流量。Linux 環境中的常見策略是將流量從低於 1024 的端口轉寄到高於 1024 的非標準端口，同時將應用程式配置為使用非標準端口。這可以避免與非 root 使用者繫結到低於 1024 的端口相關的權限問題。
>
> • [安全](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/security.md) 索引標籤的 [網路存取](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/network-access.md) 部分。

### 自動化索引標籤

#### 自動化

*與端口自動處理檔案相關的設定。*

| 設定 | 說明 |
| - | - |
| **傳送** | 到達端口的訊息是否自動處理。 |

#### 效能

*與端口資源分配相關的設定。*

<table><thead><tr><th>設定</th>
<th>描述</th></tr></thead>
<tbody><tr><td>**最大工作執行緒數**</td>
<td>此端口上處理檔案時從執行緒池中消耗的最大工作執行緒數。如果設定，則會覆蓋 [進階設定](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/advanced-settings.md) 頁面的 [效能設定](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/performance-settings.md) 部分的預設設定。</td></tr>
<tr><td>**最大檔案數**</td>
<td>分配給端口的每個執行緒傳送的最大檔案數。如果設定，則會覆蓋 [進階設定](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/advanced-settings.md) 頁面的 [效能設定](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/performance-settings.md) 部分的預設設定。</td></tr></tbody></table>

### 告警索引標籤

*與配置通知相關的設定。*

在執行服務級別協議 (SLA) 之前，需要設定電子郵件通知以接收通知。預設情況下，知行之桥 使用 [通知](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/alerts.md) 索引標籤上的全域設定。要為此端口使用其他設定，請啟用 **覆蓋全域設定**。

預設情況下，錯誤通知處於啟用狀態，這意味著每當出現錯誤時都會傳送電子郵件。要關閉錯誤通知，請取消選中 **啟用** 核取方塊。

輸入 **主題**（必填）。勾選**允許在主題中使用 ArcScript**，即可在**主題**欄位中使用 ArcScript。選中後會顯示 **ArcScript 編輯器**按鈕（![ArcScript 編輯器按鈕](https://docs.kasoftware.com/26.4/images/rest_arcscript_editor.png)）。

（可選）輸入以逗號分隔的**收件人**電子郵件地址清單。

### SLA 索引標籤

*與配置服務級別協議 (SLA) 相關的設定。*

SLA 允許配置預期流程中端口傳送或接收的資料量，並設定預期達到該資料量的時間範圍。當 SLA 未達到時，知行之桥 會傳送電子郵件警告使用者，並將 SLA 標記為 *存在風險*，這意味著如果 SLA 未能儘快達到，則會被標記為 *已違反*。這讓使用者有機會介入並確定 SLA 未達到的原因，並採取適當的措施。如果在風險時間段結束時仍未達到 SLA，則會將 SLA 標記為已違反，並再次通知使用者。

SLA 轉換為 *存在風險* 或 *已違反* 狀態時，也會寫入[應用程式日誌](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/activity.md#应用程序日志)，這意味著應用程式效能監控 (APM) 和日誌擷取工具也可以針對這些狀態發出警示。

要定義 SLA，請啟用 **預期資料量**，然後點選 **設定** 索引標籤。

![SLA Empty](https://docs.kasoftware.com/26.4/images/sla_empty.png)
<ul><li>如果端口具有單獨的傳送和接收操作，請使用選項按鈕指定 SLA 適用的方向。</li>
<li>在視窗的 **預計至少** 部分中：
<ul><li>設定預計處理的最小交易數量（交易量）</li>
<li>使用 **每個** 欄位指定時間範圍</li>
<li>指示 SLA 生效的時間。如果選擇 **開始於**，請填寫日期和時間欄位。</li>
<li>勾選希望 SLA 生效的星期幾對應的核取方塊。如有必要，請使用下拉功能表選擇 **每天**。</li></ul></li>
<li>在視窗的 **將狀態設定為“有風險”** 部分中，指定應將 SLA 標記為有風險的時間。
<ul><li>預設情況下，只有在違反 SLA 的情況下才會傳送通知。要更改此設定，請勾選 **傳送“有風險”通知**。</li></ul></li></ul>

以下範例顯示了為端口配置的 SLA，該端口預計在週一至週五每天接收 1000 個檔案。如果尚未收到 1000 個檔案，則會在時間段結束前 1 小時傳送風險通知。

![SLA Configuration Example](https://docs.kasoftware.com/26.4/images/sla_defined.png)

> [!NOTE]
>
> 如果有必要，可以關閉 SLA 通知。這在維護視窗期間非常有用。點選導覽列上的 **設定**，然後跳轉到 **通知 > 通用通知**。點選平板和鉛筆圖示進行編輯，並取消勾選 **SLA 通知** 設定。

### 日誌索引標籤

**日誌**索引標籤列出該端口生成的服務日誌。每一行代表一個日誌檔案，並顯示修改日期、檔名、大小和狀態。可以使用搜尋欄或狀態篩選器查詢特定日誌，點選檔名進行預覽或下載，或點選**下載全部日誌**將所有日誌下載為一個 zip 檔案。

## 連線和斷開訊息

預設情況下，TCP Server 端口僅在用戶端傳輸資料時生成 知行之橋 訊息，以便端口識別完整的訊息（根據[訊息解碼](#訊息解碼)部分的設定）。當用戶端連線到伺服器（如果在[進階設定索引標籤](#進階設定索引標籤)中啟用了**連線訊息**）或斷開與伺服器的連線（如果在進階設定索引標籤中啟用了**斷開訊息**）時，端口也可以生成 知行之橋 訊息。

當這些特殊訊息生成後，知行之橋 訊息中會新增一個特殊的標頭：

`x-tcpserver-event`

用戶端連線時，此標頭設定為值 `connected`，而用戶端斷開連線時，此標頭設定為 `disconnected`。

該標頭必須由工作流程中之後的端口檢查，以檢測寫入 TCP Server 端口輸出資料夾的訊息是否屬於這些特殊訊息。

## 傳送訊息

TCP Server 端口還使用一個特殊的標頭值來向連線的用戶端傳送訊息：

`x-tcpserver-connectionid`

該標頭被新增到端口生成的任何輸出訊息中，設定為 "Connection ID" 值，以唯一標識所連線的用戶端之一。為了確保訊息被傳送到正確的用戶端，被傳送回此用戶端的訊息 *必須* 將此相同的標頭設定為相同的值。

由於該標頭已經存在於端口寫出的任何訊息中，因此如果訊息透過 知行之橋 工作流程並傳回 TCP Server 端口的**交易**索引標籤，它仍將具有相同的 "Connection ID" 值，並將傳回給傳送原始訊息的同一個用戶端。如果訊息不能直接路由回 TCP Server 端口，那麼必須儲存 "Connection ID" 值，並將其作為一個標頭（與上面列出的名稱相同）應用到任何傳回給用戶端的新訊息中。

## 宏

在檔案命名策略中使用宏可以提高組織效率和對資料的上下文理解。透過將宏合併到檔名中，可以動態地包含相關資訊，例如識別碼、時間戳和訊息頭資訊，從而為每個檔案提供有價值的上下文。這有助於確保檔名反映對組織重要的詳細資訊。

知行之桥 支援這些宏，它們都使用以下語法：`%Macro%`。

<table><thead><tr><th>宏</th><th>描述</th></tr></thead>
<tbody><tr><td>ConnectorID</td><td>替換為端口的 ConnectorID。</td></tr>
<tr><td>ConnectorName</td><td>替換為端口名稱。可用於在檔名或路徑中包含連線名稱，例如按生成備份檔案的資料庫連線標記檔案。</td></tr>
<tr><td>Ext</td><td>替換為端口當前正在處理的檔案的副檔名。</td></tr>
<tr><td>Filename</td><td>替換為端口當前正在處理的檔案的檔名（包括副檔名）。</td></tr>
<tr><td>FilenameNoExt</td><td>替換為端口當前正在處理的檔案的檔名（不帶副檔名）。</td></tr>
<tr><td>MessageId</td><td>計算端口輸出的訊息的 MessageId。</td></tr>
<tr><td>RegexFilename:*pattern*</td><td>將規則運算式模式應用於端口當前正在處理的檔案的檔名。</td></tr>
<tr><td>Header:*headername*</td><td>替換為端口正在處理的當前訊息的目標訊息頭（`headername`）的值。</td></tr>
<tr><td>LongDate</td><td>以常規格式計算系統的當前日期時間（例如，2024 年 1 月 24 日星期三）。</td></tr>
<tr><td>ShortDate</td><td>以 yyyy-MM-dd 格式計算系統的當前日期時間（例如 2024-01-24）。</td></tr>
<tr><td>DateFormat:*format*</td><td>以指定格式（`format`）計算系統的當前日期時間。有關可用的日期時間格式，請參閱 [範例日期格式](https://docs.kasoftware.com/26.4/self-hosted/zh/scripting/value-formatters/date-formatters.md#date-formats-with-literal-characters)。</td></tr>
<tr><td>Vault:*vaultitem*</td><td>計算指定保管庫專案的值。</td></tr></tbody></table>

### 範例

某些宏（例如 %Ext% 和 %ShortDate%）不需要參數，但其他宏則需要。所有帶有參數的宏都使用以下語法：`%Macro:argument%`

以下是帶有參數的宏的一些範例：

<ul><li>%Header:headername%：其中 `headername` 是訊息上訊息頭的名稱。</li>
<li>%Header:mycustomheader% 解析為輸入訊息上設定的 `mycustomheader` 訊息頭的值。</li>
<li>%Header:ponum% 解析為輸入訊息上設定的 `ponum` 訊息頭的值。</li>
<li>%RegexFilename:pattern%：其中 `pattern` 是規則運算式模式。例如，`%RegexFilename:^([\w][A-Za-z]+)%` 匹配並解析為檔名中的第一個單詞，並且不區分大小寫（`test_file.xml` 解析為 `test`）。</li>
<li>%Vault:vaultitem%：其中 `vaultitem` 是 [vault](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/global-settings-vault.md) 中專案的名稱。例如，`%Vault:companyname%` 解析為儲存在保管庫中的 `companyname` 項的值。</li>
<li>%DateFormat:format%：其中 `format` 是可接受的日期格式（有關詳細資訊，請參閱 [範例日期格式](https://docs.kasoftware.com/26.4/self-hosted/zh/scripting/value-formatters/date-formatters.md#sample-date-formats)）。例如，`%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%` 解析為檔案上的日期和時間戳。</li></ul>

還可以建立更復雜的宏，如以下範例所示：

<ul><li>將多個宏組合在一個檔名中：`%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%%EXT%`</li>
<li>包括宏之外的文字：`MyFile_%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%`</li>
<li>在宏中包含文字：`%DateFormat:'DateProcessed-'yyyy-MM-dd_'TimeProcessed-'HH-mm-ss%`</li></ul>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.