windows上基于消息的异步套接字及其网络聊天室编写

本文介绍了Windows套接字的异步操作,包括阻塞和非阻塞模式,重点讲解了基于消息的异步存取策略。同时,详细阐述了WSAAsyncSelect函数在网络事件处理中的作用,以及WSAEnumProtocols、WSASocket、WSARecvFrom和WSASendTo等关键函数的使用。最后,讨论了如何利用这些技术编写网络聊天室。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、基本概念

      1、Windows套接字在两种模式下执行I/O操作,阻塞和非阻塞。在阻塞模式下,在I/O操作完成前,执行操作的Winsock函数会一直等待下去,不会立即返回程序(将控制权交还给程序)。而在非阻塞模式下,Winsock函数无论如何都会立即返回。例如,程序中调用recvfrom函数后,如果这时网络上没有数据传送过来,该函数就会阻塞程序的执行,从而导致调用线程暂停运行。

      2、Windows Sockets为了支持Windows消息驱动机制,使应用程序开发者能够方便地处理网络通信,它对网络事件采用了基于消息的异步存取策略。Windows Sockets的异步选择函数WSAAsyncSelect()提供了消息机制的网络事件选择,当使用它登记的网络事件发生时,Windows应用程序相应的窗口函数将收到一个消息,消息中指示了发生的网络事件,以及与事件相关的一些信息。

二、相关函数介绍    

         int  WSAAsyncSelect(SOCKET  s,HWND  hWnd,  unsigned  int  wMsg,long  lEvent); 
        该函数为指定的套接字请求基于Windows消息的网络事件通知,并自动将该套接字设置为非阻塞模式。
        1、s,标志请求网络事件通知的套接字描述符。
        2、hWnd,标识一个网络事件发生时接收消息的窗口的句柄。
        3、wMsg,指定网络事件发生时窗口将接收到的消息。
        4、lEvent,指定应用程序感兴趣的网络事件。该参数可以是以下表中的值之一,并且可以采用位或操作来构造多个事件。
取值 说明
FD_READ 接收有关是否可读的通知,以便读取数据
FD_WRITE 接收有关是否可写的通知
FD_OOB 接收是否带外数据抵达的通知
FD_ACCEPT 接收与进入连接有关的通知
FD_CONNECT 接收连接操作已完成的通知
FD_CLOSE 接收与套接字 关闭有关的通知
FD_QOS 接收套接字“服务质量”发生更改的通知
FD_GROUP_QOS 接收套接字组“服务质量”发生更改的通知
FD_ROUTING_INTERFACE_CHANGE 接收在指定的方向上,与路由接口发生变化有关的通知
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值