IP層的原始套接字,接收icmp埠不可達報文,當吧recv()的第四個引數設定為MSG_DONTWAIT時收不到資料,但設定為阻塞時卻可以收到資料,一下是代碼,懇請各位給予幫助
int fd=socket(AF_INET,SOCK_RAW,IPPROTO_ICMP);
if(fd<0)
{
perror("socket()");
return -1;
}
while(1)
{
int len=recv(fd,recv_buff,sizeof(recv_buff),MSG_DONTWAIT);
if(len<0)
{
perror("recv()");
printf("error is %d\n",errno);
}
if(len>0)
{
printf("success to recieve data \n");
int v=udp_unpack(recv_buff,len,ip,result);
if(v==1)
break;
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/124057.html
標籤:網絡通信
上一篇:求助,這是怎么回事啊?
下一篇:如何向目標服務器轉發資料
