標籤:
socket()函數用於根據指定的地址族、資料類型和協議來分配一個套介面的描述字及其所用的資源。如果協議protocol未指定(等於0),則使用預設的串連方式。對於使用一給定地址族的某一特定套介面,只支援一種協議。但地址族可設為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_STREAM 提供有序的、可靠的、雙向的和基於串連的位元組流,使用帶外資料傳送機制,為Internet地址族使用TCP。SOCK_DGRAM 支援不需連線的、不可靠的和使用固定大小(通常很小)緩衝區的資料報服務,為Internet地址族使用UDP。SOCK_STREAM類型的套介面為全雙向的位元組流。對於流類套介面,在接收或發送資料前必需處於已串連狀態。用connect()調用建立與另一套介面的串連,串連成功後,即可用send()和recv()傳送資料。當會話結束後,調用closesocket()。帶外資料根據規定用send()和recv()來接收。實現SOCK_STREAM類型套介面的通訊協議保證資料不會丟失也不會重複。如果終端協議有緩衝區空間,且資料不能在一定時間成功發送,則認為串連中斷,其後續的調用也將以WSAETIMEOUT錯誤返回。SOCK_DGRAM類型套介面允許使用sendto()和recvfrom()從任意連接埠發送或接收資料報。如果這樣一個套介面用connect()與一個指定連接埠串連,則可用send()和recv()與該連接埠進行資料報的發送與接收。
Python socket 詳解