socket 异步选择 WSAAsyncSelect 用法

简介:

WSAAsyncSelect 实现给异步socket给了另一种实现方式,就是通过窗口消息的方式来提醒对socket接收还是发送

msdn有非常全面的解释:https://msdn.microsoft.com/en-us/library/windows/desktop/ms741540(v=vs.85).aspx

本文几解释以下我认为难懂的几点:

1.The socket created by the accept function has the same properties as the listening socket used to accept it. 
由listen socket 的accept返回的socket和listen的socket 具有同样的属性。意味着accept返回的socket不用再重新注册窗口消息。这给socket服务器提供了便利。

2.When one of the nominated network events occurs on the specified socket s, the application window hWndreceives message wMsg. The wParam parameter identifies the socket on which a network event has occurred. The low word of lParam specifies the network event that has occurred. The high word of lParam contains any error code. The error code be any error as defined in Winsock2.h.

wParam标识哪一个socket发生了事件,LOWWORD(lParam)表示当前发生的是哪个事件(是接收还是发送)  而HIWORD(lParam ) 标识错误代码

3.Although WSAAsyncSelect can be called with interest in multiple events, the application window will receive a single message for each network event。
虽然注册事件可以是同时多个事件,但是消息响应是一个一个来的。

下面附上我今天写的Socket 服务端。是由上一篇博文里的Server端修改而来。

 

附件下载

相关文章
|
6月前
|
安全 网络协议 Java
Thread类的用法 && 线程安全 && 多线程代码案例 && 文件操作和 IO && 网络原理初识 &&UDP socket
Thread类的用法 && 线程安全 && 多线程代码案例 && 文件操作和 IO && 网络原理初识 &&UDP socket
38 0
|
3月前
C++socket客户端select异步连接发送接收数据
C++socket客户端select异步连接发送接收数据
23 0
|
缓存 网络协议 Windows
基于 IOCP 的通用异步 Windows Socket TCP 高性能服务端组件的设计与实现
设计概述   服务端通信组件的设计是一项非常严谨的工作,其中性能、伸缩性和稳定性是必须考虑的硬性质量指标,若要把组件设计为通用组件提供给多种已知或未知的上层应用使用,则设计的难度更会大大增加,通用性、可用性和灵活性必须考虑在内。
1346 0
|
Java 前端开发 消息中间件
java的nio之:java的bio流下实现的socket服务器同步阻塞模型和socket的伪异步的socket服务器的通信模型
同步I/O模型的弊端===>每一个线程的创建都会消耗服务端内存,当大量请求进来,会耗尽内存,导致服务宕机伪异步I/O的弊端分析===>当对Socket的输入流进行读取操作的时候,它会一直阻塞下去,知道发生如下三件事情(1)有数据可读(2)可用数据已经读取完毕(3)发生空指针或者I/O异常===>这意味着当对方发送请求或应答消息比较缓慢,或者网络传输比较慢时候,读取输入流的一方的通信线程将被长时间阻塞。
875 0
|
Java 测试技术 vr&ar
.net 中异步SOCKET发送数据时碰到的内存问题
做CS的开发一直都是这样的方式: server端用 C++编写,采用IOCP机制处理大量客户端连接、数据接收发送的问题 client端用 C++ 或C# 写,没什么特殊要求。   最近工作时间上比较宽裕,决定采用新的方式来处理服务端的工作: C# + SOCKET异步机制(.net里没有IOCP的直接支持) 目前正可行性分析阶段,第一步的工作:接收3W个SOCKET连接, 结果还是不错的,很快就建立起来了,速度也可以。
862 0
|
存储 Java 测试技术
可扩展多线程异步Socket服务器框架EMTASS 2.0
0 前言 >>[前言]、[第1节]、[第2节]、[第3节]、[第4节]、[第5节]、[第6节]   在程序设计与实际应用中,Socket数据包接收服务器够得上一个经典问题了:需要计算机与网络编程知识(主要是Socket),与业务处理逻辑密切(如:包组成规则),同时还要兼顾系统运行的稳定、效率、安全与管理等。
933 0
|
算法 Windows 数据安全/隐私保护
setsockopt 设置socket 详细用法
1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL)); 2.
1403 0
|
网络协议 Linux 缓存
ioctl在socket中的一些用法及示例
ioctl在socket中的一些用法及示例 函数 : ioctl(int fd, int request, void * arg)定义 : 功能 : 控制I/O设备, 提供了一种获得设备信息和向设备发送控制参数的手段.
1038 0