WSASocket()函数使用解析

Posted Jason

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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参数非法。

以上是关于WSASocket()函数使用解析的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 创建反汇编解析器实例对象 | 设置汇编解析器显示细节 )(代码片段

无法解析片段中的 ViewModelProvider 构造?

WSASocket()的定义

WSASocket与socket

WSASocket()的例子

片段(Java) | 机试题+算法思路+考点+代码解析 2023