我通过 发送一个 UDP 数据包sendto
,然后通过 .recv
如果recv
没有收到回复,则程序不会继续。但是,udp包可能会丢失,或者由于某种原因,包可能没有送达,从而导致程序卡在了recv
线上。recv
我想知道如果没有数据包到达,例如一分钟,如何设置超时,然后跳过该行并继续代码?
我没有粘贴完整代码,因为它是通用udp
代码,我的问题与唯一的recv
. 最后一点,开发环境是linux。
unsigned long buf[maxlen];
struct protoent *proto; //
struct sockaddr_in server_addr;
int s; // socket
memset( &server_addr, 0, sizeof( server_addr ));
server_addr.sin_family=AF_INET;
server_addr.sin_addr.s_addr = inet_addr(hostname);
sendto(s,msg,sizeof(msg),0,(struct sockaddr *)&server_addr,sizeof(server_addr));
recv(s,buf,sizeof(buf),0);