對於使用一給定地址族的某一特定套介面,只支援一種協議。但地址族可設為AF_UNSPEC(未指定),這樣的話協議引數就要指定了。協議號特定於進行通訊的“通訊域”。
建立一個套介面()。
#include <winsock.h>
SOCKET PASCAL FAR socket( int af, int type, int protocol);
af:一個地址描述。目前僅支援AF_INET格式,也就是說ARPA Internet地址格式。
type:指定socket型別。新套介面的型別描述型別,如TCP(SOCK_STREAM)和UDP(SOCK_DGRAM)。常用的socket型別有,SOCK_STREAM、SOCK_DGRAM、SOCK_RAW、SOCK_PACKET、SOCK_SEQPACKET等等。
protocol:顧名思義,就是指定協議。套介面所用的協議。如呼叫者不想指定,可用0。常用的協議有,IPPROTO_TCP、IPPROTO_UDP、IPPROTO_SCTP、IPPROTO_TIPC等,它們分別對應TCP傳輸協議、UDP傳輸協議、STCP傳輸協議、TIPC傳輸協議。
支援下述型別描述:
型別 解釋
SOCK_DGRAM 支援無連線的、不可靠的和使用固定大小(通常很小)緩衝區的資料包服務,為Internet地址族使用UDP。
SOCK_STREAM型別的套介面為全雙向的位元組流。對於流類套介面,在接收或傳送資料前必需處於已連線狀態。用connect()呼叫建立與另一套介面的連線,連線成功後,即可用send()和recv()傳送資料。當會話結束後,呼叫closesocket()。帶外資料根據規定用send()和recv()來接收。
實現SOCK_STREAM型別套介面的通訊協議保證資料不會丟失也不會重複。如果終端協議有緩衝區空間,且資料不能在一定時間成功傳送,則認為連線中斷,其後續的呼叫也將以WSAETIMEOUT錯誤返回。