通訊端資料類型
在 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)
{/*...*/}
相關主題