gpt4 book ai didi

c++ - 线程监听UDP问题

转载 作者:行者123 更新时间:2023-11-28 03:31:20 26 4
gpt4 key购买 nike

我的程序接收到一些 UDP 消息,每条消息都是通过客户端点击鼠标发送的。该程序的主线程(GUI)仅用于设置一些参数和创建第二个线程,使用

CreateThread(NULL, 0, MyFunc, &Data, 0, &ThreadTd);

即监听UDP数据包。这是我的函数:

... 
sd=socket(AF_INET, SOCK_DGRAM, 0);
if(bind(sd,(struct sockaddr *)&server,sizeof(struct sockaddr_in))==-1)
....
while(true){
bytes_received=recvfrom(sd,buffer,BUFFER_SIZE,0,(struct sockaddr *)&client,&client_length);
//parsing of the buffer
}

为了证明没有丢包,如果我使用了一个简单的脚本来监听我的客户端使用某个端口发送的 UDP 消息,那么所有发送的数据包都会被我的计算机接收到。当我运行我的应用程序时,只要客户端第一次单击鼠标,就会收到 UDP 消息,但是如果我尝试发送其他消息(其他鼠标单击),服务器不会收到它们(就像他没有收到一样) t catch them) 和客户端,用户必须在服务器捕获消息之前至少单击 2 次。主线程并不一直忙,第二个线程只解析传入的消息,增强了一些变量,我没有为线程分配任何优先级。

有什么建议吗?

最佳答案

除了mark的建议,你也可以使用wireshark/netcat查看数据报发送的时间/地点

关于c++ - 线程监听UDP问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12497302/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com