当前位置:首页 > Windows程序 > 正文

以WSA开头的API,结合了Windows平台特性

2024-03-31 Windows程序

Windows Sockets为了支持Windows消息驱动机制,使应用程序开发者能够方便地处理网络通信,对网络事件采用了基于消息的异步存取策略;

1、WSAAsyncSelect

  该函数为指定的套接字(socket)请求基于Windows消息的网络事件通知,并自动将该套接字设置为非阻塞模式;

  int WSAAsyncSelect (

    SOCKET s,

    HWND hWnd,         

    unsigned int wMsg, 

    long lEvent        

  );

    s:标识请求网络事件通知的套接字;

    hWnd:标识一个网络事件发生时接收消息的窗口的句柄;

    wMsg:指定网络事件发生时窗口将接收到的消息;

    lEvent:指定应用程序感兴趣的网络事件,包括:

      FD_READ  --有关是否可读的通知,以便读取数据

      FD_WRITE  --有关是否可写的通知,以便发送数据

      FD_OOB  --是否带外(OOB)数据抵达的通知

      FD_ACCEPT  --与进入连接有关的通知

      FD_CONNECT  --连接操作已完成的通知

      FD_CLOSE  --与套接字关闭有关的通知

      FD_QOS  --套接字“服务质量”发生更改的通知

      FD_GROUP_QOS  --套接字组“服务质量”发生更改的通知

      FD_ROUTING_INTERFACE_CHANGE  --在指定的方向上,与路由接口发生变化有关的通知

      FD_ADDRESS_LIST_CHANGE  --针对套接字的协议家族,本地地址列表发生变化的通知

2、WSAEnumProtocols

  该函数可获得系统中安装的网络协议的相关信息,该函数不能重复调用,传入的缓冲区必须足够大以便能存放所有元素;

  int WSAEnumProtocols (

    LPINT lpiProtocols,                  

    LPWSAPROTOCOL_INFO lpProtocolBuffer, 

    ILPDWORD lpdwBufferLength            

  );

      lpiProtocols:一个以NULL结尾的协议标识号数组;如果为NULL,则该函数返回所有可用协议的信息,否则只返回数组中列出的协议信息;

      lpProtocolBuffer:作为返回值使用,一个用WSAPROTOCOL_INFO结构体填充的缓冲区;WSAPROTOCOL_INFO结构体用来存放或得到一个指定协议的完整信息;

      lpdwBufferLength:在输入时,指定传递给该函数的参数lpProtocolBuffer缓冲区的长度;在输出时,存有获取所有请求信息需传递给该函数的最小缓冲区的长度;

3、WSAStartup

  该函数将初始化进程使用的socket库;

  int WSAStartup (

    WORD wVersionRequested, 

    LPWSADATA lpWSAData 

  );

      wVersionRequested:可以使用的socket库的版本;高位字节指定库的副版本,低位字节为主版本;

      lpWSAData:返回可用库的信息,是一个指向WSADATA数据结构类型变量的指针;

4、WSACleanup

  该函数将终止程序对socket库的使用;

  int WSACleanup();

5、WSASocket

  该函数将创建套接字;

  SOCKET WSASocket (

    int af,                            

     int type,                          

      int protocol,                      

    LPWSAPROTOCOL_INFO lpProtocolInfo, 

     GROUP g,                           

    DWORD dwFlags                      

  );

      af:指定地址族,AF_UNIX/AF_LOCAL/AF_FILE--本地通信;AF_INET--网络通信IPv4(主用);AF_INET6--网络通信IPv6(前缀AF替换成PF效果一样);

      type:指定socket类型,SOCK_STREAM--流式套接字,SOCK_DGRAM--数据报式套接字;

      protocol:推荐为0;

      lpProtocolInfo:一个指向WSAPROTOCOL_INFO结构体的指针,该结构体定义了所创建的套接字的特性;可以为NULL;

      g:保留参数;

      dwFlags:指定套接字属性的描述;如果设为WSA_FLAG_OVERLAPPED,将创建一个重叠套接字;

6、WSARecv---recv函数的扩展版本

  int WSARecv (

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/40502.html

Jm-杰米博客Jamie
草根站长的技术交流乐园!IT不会不要紧快来好好学习吧!
  • 20786文章总数
  • 7494595访问次数
  • 建站天数
  • 友情链接