socket() 創建一個通訊端點並返回一個套接口。但是在socket庫中例程在應用於阻塞套接口時會阻塞。
WSASocket()的發送操作和接收操作都可以被重疊使用。接收函數可以被多次調用,發出接
收緩衝區,準備接收到來的數據。發送函數也可以被多次調用,組成一個發送緩衝區隊列。
可是socket()卻只能發過之後等待回消息纔可做下一步操作!
Header: Declared in Winsock2.h.
Library: Use Ws2_32.lib.
SOCKET WSASocket(
int af,
int type,
int protocol,
LPWSAPROTOCOL_INFO lpProtocolInfo,
GROUP g,
DWORD dwFlags
);
af:地址族描述。目前僅支持PF_INET格式,亦即ARPA Internet地址格式。
type:新套接口的類型描述。
protocol:套接口使用的特定協議,如果調用者不願指定協議則定爲0。
lpProtocolInfo:一個指向PROTOCOL_INFO結構的指針,該結構定義所創建套接口的特性。如果本參數非零,則前三個參數(af, type, protocol)被忽略。
g:套接口組的描述字。
iFlags:套接口屬性描述。
返回值:
若無錯誤發生,WSASocket()返回新套接口的描述字。否則的話,返回 INVALID_SOCKET,應用程序可以調用WSAGetLastError()來獲取相應的錯誤代碼。
錯誤代碼:
WSANOTINITIALISED 在調用本API之前應成功調用WSAStartup()。
WSAENETDOWN 網絡子系統失效。
WSAEAFNOSUPPORT 不支持指定的地址族。
WSAEINPROGRESS 一個阻塞的WinSock調用正在進行中,或者服務提供者仍在處理一個回調函數
WSAEMFILE 無可用的套接口描述字。
WSAENOBUFS 無可用的緩衝區空間。套接口無法創建。
WSAEPROTONOSUPPORT 不支持指定的協議。
WSAEPROTOTYPE 指定的協議對於本套接口類型錯誤。
WSAESOCKTNOSUPPORT 本地址族不支持指定的套接口類型。
WSAEINVAL g參數非法。