- 我在做6678与PC端的网络通信,尝试使用6678向PC端循环发送(sendto)udp包,如下代码所示:
-
for(i = 0; i < 10;i++){
tmp = sendto(udpSendSock, pBuf, 100, 0, (PSA)&dstAddr, sizeof(dstAddr));
if(tmp >= 0){
printf("已发送%d个字符:\n", tmp);
//printf("%s\n",pBuf);}else{
printf("failed in sendto!\n");
printf("sendto Fail Number: %d\n", fdError());
}TaskSleep(1);
} -
我在sendto和TaskSleep两行各打上了断点。执行完sendto后,但程序正常向下执行,停止在了TaskSleep之前,printf的内容也在控制台里显示了出来,发送了XX个字符,而PC端的wireshark并没有收到sendto发出的udp包。让程序再次跑起来,TaskSleep后PC端收到了之前发出的UDP包。
-
有没有大佬知道为什么会出现这种现象呢,按理说sendto执行完,PC端就应该立即接收到对应的udp包啊。另外,我将TaskSleep去除或者让其TaskSleep(0)休眠0ms,PC端就只能收到最后一次for循环的sendto发出的包。
-
希望能够得到回复,非常感谢啊!!