请问,recv能实现永久等待吗?怎样实现?

caep_cq 2005-10-17 10:42:51
谢谢
...全文
117 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
caep_cq 2005-10-17
ximenying(西门) :不是吧,有个默认超时时间吧
回复
ximenying 2005-10-17
本来就是永久等待直到有数据到来啊,还需要怎么实现啊
回复
godoli 2005-10-17
int setsockopt (SOCKET s,int level,int optname,const char FAR * optval,int optlen);
int timeout = 6000;// 超时时间
setsockopt(s,SOL_SOCKET,RCVTIMEO,(char FAR *)&timeout,sizeof(int));
19. SO_RCVTIMEO
选项值 类型获取/设置 Winsock版本 说明
整数 两者均可 1 + 获取或设置与套接字上数据接收对应的超时时间值(以毫秒为单位)
SO_RCVTIMEO选项用于设置一个锁定套接字上的接收超时值。这是一个以毫秒为单位的整数,用于指出一个Winsock接收函数在接收数据时,最多应“锁定”多长时间。如需使用SO_RCVTIMEO选项,并用WSASocket函数创建套接字,那么必须将WSA_FLAG_OVERLAPPED指定成为WSASocket的dwFlags参数的一部分。以后对任何Winsock接收函数的调用(包括recv、recvfrom、WSARecv、WSARecvFrom等等)都只会锁定指定的时间长度。假如在那段时间内,没有数据抵达,调用便会失败,并返回错误10060(WSAETIMEDOUT)。
回复
微星1234 2005-10-17
可以对套接字设置等待时间的啊, 设成足够长不就行啦
回复
发帖
网络编程
创建于2007-09-28

1.8w+

社区成员

VC/MFC 网络编程
申请成为版主
帖子事件
创建了帖子
2005-10-17 10:42
社区公告
暂无公告