在阻塞模型中,recvfrom和recv函数默认都是永久阻塞的,即没有数据到来和不发生错误的情况下函数的调用不会返回,但是可以调用setsockopt来设置阻塞时间。设置了合适的阻塞时间,可以让接收函数超时返回。
int setsockopt(
__in SOCKET s,
__in int level,
__in int optname,
__in const char* optval,
__in int optlen
);
SO_RCVTIMEO | int | Receives time-out in milliseconds (available in the Microsoft implementation of Windows Sockets 2). |
SO_SNDTIMEO | int | Sends time-out in milliseconds (available in the Microsoft implementation of Windows Sockets 2). |
SO_RECVTIMEO即可控制接收函数的超时时间。例代码如下:
#include <WinSock2.h>
#include <Windows.h>
#include <stdio.h>
#include <time.h>
#pragma comment(lib, "