关于IOCP的WSASend 同时发送2个包,第2个包客户端收不到
小弟最近接受IOCP,琢磨了好些天了眼看快要完成了却出现了这种问题。我是写了一个转发的服务器,收到客户端连续发来的2个数据时进行转发,我调试出WSASend时的时间,发现是同一毫秒,发送以后收到的通知信息是2个数据都发送成功。但是客户端只能收到第一个数据。
然后我试着发送第二个数据的时候延迟了500毫秒的时间,结果客户端就能收到了。这个问题真诡异,难道每次转发都得延迟500毫秒吗?那这IOCP的速度不敢想象啊。还是我哪里没理解对呢。请各们前辈帮我一下,小弟不感激不尽!
然后我试着发送第二个数据的时候延迟了500毫秒的时间,结果客户端就能收到了。这个问题真诡异,难道每次转发都得延迟500毫秒吗?那这IOCP的速度不敢想象啊。还是我哪里没理解对呢。请各们前辈帮我一下,小弟不感激不尽!
...全文
相关推荐
博客文章《完成端口详解》配套代码(压力测试客户端)
**客户端连接**:客户端通过创建socket并使用connect函数发起连接请求到服务器。使用IOCP,客户端可以在发起连接后立即返回,而无需等待连接完成,这样可以提高并发性。2.
高性能IOCP客户端模拟程序设计与实战
假设794协议为电力终端通用规约,其基本帧格式如下:// 0x68// 数据域长度// 控制域// 设备编号// 序号// 版本号// 前n字节异或校验校验逻辑实现:i < len;
IOCP文件客户端 IOCP文件客户端
在客户端程序中,IOCP通常与TCP/IP协议结合,用于接收和发送文件数据。客户端发起连接请求,通过ConnectEx函数进行非阻塞连接,接着利用WSASend和WSARecv函数发送和接收数据。
IOCP知识点及疑惑
IOCP的特性是提交操作要么全部成功,要么全部失败,因此无需担心半包发送的问题。要确切知道已发送的数据量,可以通过接收方确认包的方式实现,发送方收到确认包后即可得知实际发送的数据。
IOCP源代码之 AcceptEx函数调用及简单的客户端
发送和接收数据,可能使用WSASend和WSARecv等函数进行异步操作。4. 关闭套接字和清理资源。


网络编程
