Socket()与WSASocket()的区别

本文介绍了WSASocket函数的使用方法及特点,与socket函数进行了对比。WSASocket支持重叠I/O,允许发送和接收操作同时进行,提高了网络编程效率。文章详细解释了函数参数及其返回值,并列举了可能遇到的错误代码。

  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参数非法。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值