WSASocket()

創建一個與指定傳送服務提供者捆綁的套接口,可選地創建和/或加入一個套接口組。 此函式為socket()的擴展版本,其功能都是創建一個原始套接字。使用時需要包含 winsock2.h 頭檔案和連結ws2_32.lib庫。

定義

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().

相關詞條

相關搜尋

熱門詞條

聯絡我們