-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Open
Description
-
系统环境: win11 25H2 x64
-
编译环境: vs2022, X86 dll方式链接到项目中
-
问题描述:除了第一个封包能及时发送,后面的发送都会压一个,比如第一个封包发送后,第二个封包就在缓存中不发送,发送第三个封包时就将第二个封包实际发送出去,再将三个封包放入缓存...
-
尝试的解决方法:
- 调用: ITcpClient::start(ip, port, false), 将第三个参数设置为false 同步方式通讯,问题也没解决。
- HP_Create_TcpClient创建实例后,或者OnConnect回调函数中 设置 SetNoDelay(TRUE); 程序报 EXCEPTION_ACCESS_VIOLATION 写入异常; ITcpClient::start() 执行成功之后,再设置SetNoDelay(TRUE);成功,但是问题没解决 。
- 调用: ITcpClient::GetPendingDataLength(), 发现未发送的数据长度刚好就是调用ITcpClient::Send函数发送的数据大小。
- 等待超过两分钟,不会等超时或者发送心跳封包时将缓存中的数据发送出去。
- 构造了一个只有封包头的空封包, 每次发送完之后,再发送一个只有封包头的空封包,问题暂时解决。
可是这种多发送一个空封包的方法并不完美,所以过来请教一下,我这个问题是否有别人也遇到?是否有更好的解决办法?
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels