我有一个应用程序在循环中传输一些数据。 基础协议是WinSock上的UDP。如果在每次发送操作后没有添加睡眠(1ms),则大部分数据都不会发送(或wireshark无法捕获)。您是否遇到过这样的行为,UDP不会处理循环中的重复发送?UDP传输性能
问候
Tugrul
我有一个应用程序在循环中传输一些数据。 基础协议是WinSock上的UDP。如果在每次发送操作后没有添加睡眠(1ms),则大部分数据都不会发送(或wireshark无法捕获)。您是否遇到过这样的行为,UDP不会处理循环中的重复发送?UDP传输性能
问候
Tugrul
第一件事情,你应该检查返回值,当您将数据发送到检查数据是否发送成功与否。 第二件事,这可能发生UDP的内部缓冲区不能容纳更多的数据,因为以前的数据尚未传输。所以最简单的解决方案是,每次发送数据之前,您都应该检查UDP套接字是否可写。您可以通过在该UDP套接字上调用“select”或“poll”来完成。
您是否检查过发送函数的返回值? – 2011-04-04 14:35:51
实际上在WinSock上有一个TCP客户端类,我检查它是否与某些特定的错误代码相关(但不是针对所有我认为的) – tguclu 2011-04-04 15:54:26
这听起来像非阻塞套接字,即缓冲区溢出。 – 2011-04-06 04:52:18