WSASocket()函數使用解析


詳情參閱:https://msdn.microsoft.com/en-us/library/ms742212(VS.85).aspx

 

WSASocket()

簡述

The WSASocket function creates a socket that is bound to a specific transport-service provider.

和socket的區別:

  winsock是socket的windows平台的實現。

  winsock是微軟專門為windows操作系統開發的socket網絡編程接口,而socket是通用網絡編程接口。

  socket() 函數創建一個通訊端點並返回一個套接口。但是在socket庫中例程在應用於阻塞套接口時會阻塞。

  WSASocket()的發送操作和接收操作都可以被重疊使用。接收函數可以被多次調用,發出接收緩沖區,准備接收到來的數據。發送函數也可以被多次調用,組成一個發送緩沖區隊列。

  可是socket()卻只能發過之后等待回消息才可做下一步操作!

函數原型

SOCKET WSASocket(
  _In_ int                af,
  _In_ int                type,
  _In_ int                protocol,
  _In_ LPWSAPROTOCOL_INFO lpProtocolInfo,
  _In_ GROUP              g,
  _In_ DWORD              dwFlags
);

參數

  af:地址族描述。目前僅支持PF_INET格式,亦即ARPA Internet地址格式。

  type:新套接口的類型描述。  

  protocol:套接口使用的特定協議,如果調用者不願指定協議則定為0。

  lpProtocolInfo:一個指向PROTOCOL_INFO結構的指針,該結構定義所創建套接口的特性。如果本參數非零,則前三個參數(af, type, protocol)被忽略。

  g:套接口組的描述字。

  dwFlags:套接口屬性描述。

返回值  

  若無錯誤發生,WSASocket()返回新套接口的描述字。否則的話,返回 INVALID_SOCKET,應用程序可以調用WSAGetLastError()來獲取相應的錯誤代碼。

錯誤代碼

  WSANOTINITIALISED                在調用本API之前應成功調用WSAStartup()。

  WSAENETDOWN                      網絡子系統失效。

  WSAEAFNOSUPPORT              不支持指定的地址族。

  WSAEINPROGRESS                 一個阻塞的WinSock調用正在進行中,或者服務提供者仍在處理一個回調函數

  WSAEMFILE                              無可用的套接口描述字。

  WSAENOBUFS                          無可用的緩沖區空間。套接口無法創建。

  WSAEPROTONOSUPPORT      不支持指定的協議。

  WSAEPROTOTYPE                  指定的協議對於本套接口類型錯誤。

  WSAESOCKTNOSUPPORT      本地址族不支持指定的套接口類型。

  WSAEINVAL                               g參數非法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM