Posted on 2010-09-14 16:38
楊書童 閱讀(3916)
評論(0) 編輯 收藏 引用 所屬分類:
基礎知識-經驗之談
linux:
1
struct timeval timeout=
{3,0};//3s
2
3
int ret=setsockopt(sock_fd,SOL_SOCKET,SO_SNDTIMEO,&timeout,sizeof(timeout));
4
5
int ret=setsockopt(sock_fd,SOL_SOCKET,SO_RCVTIMEO,&timeout,sizeof(timeout));
6
7
如果ret==0 則為成功,-1為失敗,這時可以查看errno來判斷失敗原因
8
9
int recvd=recv(sock_fd,buf,1024,0);
10
11
if(recvd==-1&&errno==EAGAIN)
12
13
{
14
15
printf("timeout\n");
16
17
}
18
19
windows:
int timeout = 3000; //3s

int ret=setsockopt(sock_fd,SOL_SOCKET,SO_SNDTIMEO,&timeout,sizeof(timeout));

int ret=setsockopt(sock_fd,SOL_SOCKET,SO_RCVTIMEO,&timeout,sizeof(timeout));
