共用方式為


通訊端資料類型

在 Winsock 應用程式中,通訊端描述元不是檔案描述元,而且必須與 Winsock 函式搭配使用。

在 UNIX 中,通訊端描述元是以標準檔案描述元表示。 因此,UNIX 上的通訊端描述元可能會傳遞至任何標準檔案 I/O 函式 (讀取和寫入,例如) 。

此外,UNIX 中的所有控制碼,包括通訊端控制碼,都是小型的非負整數,有些應用程式會假設這將會是真。

Windows Sockets 控制碼沒有限制,但值INVALID_SOCKET不是有效的通訊端。 通訊端控制碼可能會接受範圍 0 到 INVALID_SOCKET–1 的任何值。

由於 SOCKET 類型未簽署,因此從 編譯現有的原始程式碼,例如,UNIX 環境可能會導致編譯器警告有關已簽署/未簽署資料類型不符。

例如,藉由比較傳回值與 –1 來檢查 通訊端接受 函式傳回時的錯誤,或查看此值是否為負數 (UNIX) 中的常見和合法方法。 相反地,應用程式應該使用資訊清單常數INVALID_SOCKET,如 Winsock2.h 標頭檔中所定義。 例如:

一般 BSD UNIX 樣式

s = socket(...);
if (s == -1)    /* or s < 0 */
    {/*...*/}

慣用樣式

s = socket(...);
if (s == INVALID_SOCKET)
    {/*...*/}

將通訊端應用程式移植到 Winsock

Winsock 程式設計考慮