为何CSocket设置SO_RCVTIMEO超时不起作用?
CSocket udpsock;
udpsock.Create(5000,SOCK_DGRAM);
int timeout=5;
socksent.SetSockOpt(SO_RCVTIMEO,(char*)&timeout,sizeof(timeout));
CString ipStr;
UINT port;
char recvdata[512]; //接收文件信息
udpsock.ReceiveFrom(recvdata,512,ipStr,port);
udpsock设为超时5秒,为何过了5秒还不退出,ReceiveFrom继续等待?
问题点数:20、回复次数:5Top
1 楼krh2001(边城浪子)回复于 2005-05-07 08:38:50 得分 10
socksent? 好象跟 udsock 不是同一个呀Top
2 楼dragonyjd(藍色夢想XP)回复于 2005-05-07 08:41:00 得分 0
哦,不好意思,打错了.
CSocket udpsock;
udpsock.Create(5000,SOCK_DGRAM);
int timeout=5;
udpsock.SetSockOpt(SO_RCVTIMEO,(char*)&timeout,sizeof(timeout));
CString ipStr;
UINT port;
char recvdata[512];
udpsock.ReceiveFrom(recvdata,512,ipStr,port);Top
3 楼nuaawenlin(飘人)回复于 2005-05-07 16:03:06 得分 10
要设置套接字为 非阻塞的Top
4 楼dragonyjd(藍色夢想XP)回复于 2005-05-07 17:57:07 得分 0
设为非阻塞的岂不是调用完ReceiveFrom之后立即返回了?我想让它等5秒后,如果超时则退出。Top
5 楼iwdc(好好看书)回复于 2005-06-03 10:13:29 得分 0
“5”代表5s还是5ms?Top




