Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C UDP套接字,不';第一次不工作,第二次工作_C_Sockets_Udp - Fatal编程技术网

C UDP套接字,不';第一次不工作,第二次工作

C UDP套接字,不';第一次不工作,第二次工作,c,sockets,udp,C,Sockets,Udp,尝试为从udp套接字接收数据的简单程序构建框架。我会收到一条收到的消息,但是,消息永远不会弹出,如果我尝试重新发送消息,消息就会弹出,但同样的问题会一次又一次出现。我肯定我错过了一些愚蠢的东西,但我无法定位它 #包括 #包括 #包括 #包括 #包括 int shared_sock,n,received,receivelen; receivesocket中的struct sockaddr_; 索克伦; char-mesg[100]; 无符号字符辅助_id[]={0x18,0xDE,0x1B}; i

尝试为从udp套接字接收数据的简单程序构建框架。我会收到一条收到的消息,但是,消息永远不会弹出,如果我尝试重新发送消息,消息就会弹出,但同样的问题会一次又一次出现。我肯定我错过了一些愚蠢的东西,但我无法定位它

#包括
#包括
#包括
#包括
#包括
int shared_sock,n,received,receivelen;
receivesocket中的struct sockaddr_;
索克伦;
char-mesg[100];
无符号字符辅助_id[]={0x18,0xDE,0x1B};
int main()
{
shared_sock=套接字(PF_INET、sock_DGRAM、IPPROTO_UDP);
/*我的地址*/
memset(&receivesocket,0,sizeof(receivesocket));
receivesocket.sin_family=AF_INET;
receivesocket.sin\u addr.s\u addr=htonl(INADDR\u ANY);
receivesocket.sin_port=htons(11000);
receivelen=sizeof(receivesocket);
if(bind(shared_sock,(struct sockaddr*)和receivesocket,receivelen)<0){
佩罗(“绑定”);
返回1;
}
memset(mesg,01100);
while(true){
如果((接收到的=recvfrom(共享存储,mesg,100,0,NULL,NULL))<0){
perror(“recvfrom”);
返回1;
}
printf(“收到以下%d:\n”,已收到);
printf(“%s”,mesg);
}
返回0;
}

此程序为我正确编译和运行(在MacOS/X下)——从同一主机上的另一个程序向127.0.0.1:11000发送UDP数据包时,每次我发送数据包时,此程序都会打印“收到以下[blah]:”。如果您从不同的主机发送UDP数据包,那么您的防火墙可能正在与您玩游戏?如果启用了,您可以尝试禁用它;打印后。在发送第一条消息后,您是否从中获得
printf
消息?我将获得第一条print语句,但之后它是空的,但如果我在保持程序运行的同时重新发送消息,消息将显示,然后直接在它之后再次打印print语句,只是添加了fflush(stdout)现在它的工作方式正是它应该的!谢谢