我正在調用UDP套接字上的select()以查看是否有要讀取的數據。每次該方法返回-1並將errno設置爲22(無效參數)。這裏是我的代碼的一部分:在UDP套接字上調用select()會給出無效參數錯誤
fd_set sockets;
struct timeval alarm;
alarm.tv_sec = 0;
alarm.tv_usec = 1000;
FD_ZERO(&sockets);
FD_SET(udpSocket, &sockets);
maxfd = udpsocket + 1;
selected = select(maxfd, &sockets, NULL, NULL, &alarm);
printf("%d\n", selected);
「Selected」始終爲-1。我知道套接字是好的,因爲在這一點上我已經成功地發送了數據。
您可以使用初始化套接字和鬧鐘的方式更新問題嗎? – Fred
我強烈建議你將'struct timeval alarm'重命名爲別的東西,碰巧有一個同名的函數(即''alarm()') – Hasturkun