电竞比分网-中国电竞赛事及体育赛事平台

分享

WSASocket()與Socket()的區(qū)別

 herowuking 2014-12-16

 /****************************************************

WSASocket是Windows專用,支持異步操作;
socket是unix標準,只能同步操作。

Socket可采用多線程實現(xiàn)非阻塞

*******原文:http://hi.baidu.com/%B9%A6%BB%D4cgh/blog/item/c610f713abbb0609b9127b99.html******/

 

winsock是socket的windows平臺的實現(xiàn)。winsock是微軟專門為windows操作系統(tǒng)開發(fā)的socket網絡編程接口,而socket是通用網絡編程接口。
socket() 函數(shù)創(chuàng)建一個通訊端點并返回一個套接口。但是在socket庫中例程在應用于阻塞套接口時會阻塞。WSASocket()的發(fā)送操作和接收操作都可以被重疊使用。接收函數(shù)可以被多次調用,發(fā)出接收緩沖區(qū),準備接收到來的數(shù)據(jù)。發(fā)送函數(shù)也可以被多次調用,組成一個發(fā)送緩沖區(qū)隊列。可是socket()卻只能發(fā)過之后等待回消息才可做下一步操作!

 

 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:套接口使用的特定協(xié)議,如果調用者不愿指定協(xié)議則定為0。
  lpProtocolInfo:一個指向PROTOCOL_INFO結構的指針,該結構定義所創(chuàng)建套接口的特性。如果本參數(shù)非零,則前三個參數(shù)(af, type, protocol)被忽略。   

       g:套接口組的描述字。
  iFlags:套接口屬性描述。

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

  錯誤代碼:
  WSANOTINITIALISED                在調用本API之前應成功調用WSAStartup()。
  WSAENETDOWN                      網絡子系統(tǒng)失效。
  WSAEAFNOSUPPORT              不支持指定的地址族。
  WSAEINPROGRESS                 一個阻塞的WinSock調用正在進行中,或者服務提供者仍在處理一個回調函數(shù)
  WSAEMFILE                              無可用的套接口描述字。
  WSAENOBUFS                          無可用的緩沖區(qū)空間。套接口無法創(chuàng)建。
  WSAEPROTONOSUPPORT      不支持指定的協(xié)議。
  WSAEPROTOTYPE                  指定的協(xié)議對于本套接口類型錯誤。
  WSAESOCKTNOSUPPORT      本地址族不支持指定的套接口類型。
  WSAEINVAL                               g參數(shù)非法。

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多