定義
SOCKET WSASocket (
int af,
int type,
int protocol,
LPWSAPROTOCOL_INFO lpProtocolInfo,
GROUP g,
DWORD dwFlags
);
參數說明:
af:[in]一個地址族規範。目前僅支持AF_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參數非法。
例子
SOCKET s;
// 創建一個將ICMP 作為基層IP協定的原始套接字
s = WSASocket (AF_INET, SOCK_RAW, IPPROTO_ICMP , NULL, 0, WSA_FLAG_OVERLAPPED);
if ( s == INVALID_SOCKET )
{
//錯誤處理
//....
}
另請參閱
accept(), bind(), connect(), getsockname(),getsockopt(), setsockopt(), listen(), recv(),recvfrom(), select(), send(), sendto(),shutdown(), ioctlsocket().