高分:同步模式下的网络连接超时设置,需要源码.

wuxuan 2002-09-09 01:30:21
同步模式下,使用SOCKET API编程时的网络连接超时设置程序:
connect超时
send超时
recv超时

急,急,急.高分.
...全文
54 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
javanew 2002-12-22
  • 打赏
  • 举报
回复
123
firmamenthy 2002-09-16
  • 打赏
  • 举报
回复
mark
qzwen 2002-09-10
  • 打赏
  • 举报
回复
用select函数
wuxuan 2002-09-09
  • 打赏
  • 举报
回复
还是我自己解决了,我找到了一个,如果谁需要,可以看看.
http://www.codeguru.com/internet/timeoutsocket.shtml
wuxuan 2002-09-09
  • 打赏
  • 举报
回复
真的没人能解决吗connect 超时吗?
freeman 2002-09-09
  • 打赏
  • 举报
回复
select
azlza 2002-09-09
  • 打赏
  • 举报
回复
怎么终止?
xuying 2002-09-09
  • 打赏
  • 举报
回复
to wuxuan(真心英雄) :
你在waitforsingleobject()函数中最后一个参数是timeout,如果过了这个指定的时间,该函数返回值为TIME_OUT,此时,你可以中止这个线程,连接过程就结束了。
azlza 2002-09-09
  • 打赏
  • 举报
回复
setsockopt(m_sSock, IPPROTO_TCP1, SO_SNDTIMEO, (char *)(&iValue), iLen);//

这个函数,我在XP,VS.Net下根本没用啊,阻塞的照样阻塞,我愁了一个多礼拜了:~(
wuxuan 2002-09-09
  • 打赏
  • 举报
回复
to xuying:
这们并不能设置CONNECT超时大小值呀.如何减少timeout值呢?
xuying 2002-09-09
  • 打赏
  • 举报
回复
除了通过用setsockopt设置socket选项,也可以用线程的方法,比如:
// 负责连接的线程,参数为socket
void connnectthread(socket s)
{
connect(s);
}

main()
{
//启动连接线程
h_thread = beginthread(connectthread);

// 可以根据返回值来判断是连接完成,还是超过指定的timeout
waitforsingleobject(h_thread, timeout);

}
wuxuan 2002-09-09
  • 打赏
  • 举报
回复
connect超时,主要是目的IP地址不存在时的超时太长了,如何设置.
sans 2002-09-09
  • 打赏
  • 举报
回复
sorry!应该这样:
setsockopt(m_sSock, IPPROTO_TCP1, SO_RCVTIMEO, (char *)(&iValue), iLen); //接收超时

setsockopt(m_sSock, IPPROTO_TCP1, SO_SNDTIMEO, (char *)(&iValue), iLen);//发送超时
sans 2002-09-09
  • 打赏
  • 举报
回复
int iValue, iLen=sizeof(iValue);
iValue = ???;//超时值
setsockopt(m_sSock, SOL_SOCKET, SO_RCVTIMEO, (char *)(&iValue), iLen); //接收超时

setsockopt(m_sSock, SOL_SOCKET, SO_SNDTIMEO, (char *)(&iValue), iLen);//发送超时
wuxuan 2002-09-09
  • 打赏
  • 举报
回复
急,急,急.在线等待.

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧