社区
网络编程
帖子详情
如何设置tcp的连接超时时间?
lugangxyz
2004-07-07 02:13:20
setsockopt(sockServer,SOL_SOCKET,SO_SNDTIMEO,(char*)&timeout,sizeof(timeout));
好像不行
...全文
3507
5
打赏
收藏
如何设置tcp的连接超时时间?
setsockopt(sockServer,SOL_SOCKET,SO_SNDTIMEO,(char*)&timeout,sizeof(timeout)); 好像不行
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
horisly
2005-08-20
打赏
举报
回复
mark
AntonlioX
2005-06-28
打赏
举报
回复
mark
wangyangcheng
2005-06-10
打赏
举报
回复
Mark.
PiggyXP
2004-07-07
打赏
举报
回复
Socket中如何设置连接超时
设置connect的超时很简单,CSDN上也有人提到过使用select,但却没有一个令人满意与完整的答案。偶所讲的也正是select函数,此函数集成在winsock1.1中,简单点讲,"作用使那些想避免在套接字调用过程中被锁定的应用程序,采取一种有序的方式,同时对多个套接字进行管理"(《Windows网络编程技术》原话)。使用方法与解释请见《Windows网络编程技术》。
在使用此函数前,需先将socket设置为非锁定模式,这样,在connect时,才会立马跳过,同时,通常也会产生一个WSAEWOULDBLOCK错误,这个错误没关系。再执行select则是真正的超时。
WSADATA wsd;
SOCKET cClient;
int ret;
struct sockaddr_in server;
hostent *host=NULL;
if(WSAStartup(MAKEWORD(2,0),&wsd)){return 0;}
cClient=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(cClient==INVALID_SOCKET){return 0;}
//set Recv and Send time out
int TimeOut=6000; //设置发送超时6秒
if(::setsockopt(cClient,SOL_SOCKET,SO_SNDTIMEO,(char *)&TimeOut,sizeof(TimeOut))==SOCKET_ERROR){
return 0;
}
TimeOut=6000;//设置接收超时6秒
if(::setsockopt(cClient,SOL_SOCKET,SO_RCVTIMEO,(char *)&TimeOut,sizeof(TimeOut))==SOCKET_ERROR){
return 0;
}
//设置非阻塞方式连接
unsigned long ul = 1;
ret = ioctlsocket(cClient, FIONBIO, (unsigned long*)&ul);
if(ret==SOCKET_ERROR)return 0;
//连接
server.sin_family = AF_INET;
server.sin_port = htons(25);
server.sin_addr .s_addr = inet_addr((LPCSTR)pSmtp);
if(server.sin_addr.s_addr == INADDR_NONE){return 0;}
connect(cClient,(const struct sockaddr *)&server,sizeof(server));
//select 模型,即设置超时
struct timeval timeout ;
fd_set r;
FD_ZERO(&r);
FD_SET(cClient, &r);
timeout.tv_sec = 15; //连接超时15秒
timeout.tv_usec =0;
ret = select(0, 0, &r, 0, &timeout);
if ( ret <= 0 )
{
::closesocket(cClient);
return 0;
}
//一般非锁定模式套接比较难控制,可以根据实际情况考虑 再设回阻塞模式
unsigned long ul1= 0 ;
ret = ioctlsocket(cClient, FIONBIO, (unsigned long*)&ul1);
if(ret==SOCKET_ERROR){
::closesocket (cClient);
return 0;
}
gracezhu
2004-07-07
打赏
举报
回复
http://community.csdn.net/Expert/topic/3122/3122204.xml?temp=.2910883
java
tcp
连接
超时
时间
设置
_如何在Socket建立
连接
时
设置
最大
超时
时间
?
本文介绍如何在Java中使用Socket的setSoTimeout()方法
设置
读取数据的最大
超时
时间
,防止因等待数据而无限期阻塞。通过示例演示了如何处理
超时
异常。
linux
tcp
连接
时间
设置
,Linux下Socket
连接
超时
的一种实现方法
本文介绍了一种在Linux环境下使用SO_SNDTIMO
设置
Socket
连接
超时
的方法。通过对比传统的非阻塞
连接
和select监听的方式,展示了如何简化代码实现
连接
超时
的功能。
tcp
连接
设置
一个
超时
时间
(没在操作系统层面
设置
)
博客围绕
TCP
连接
展开,提到代码使用操作系统的
TCP
连接
,默认重试机制较慢。介绍了在Linux系统中可通过修改参数控制重试行为,还给出了wait_for机制的实现,
设置
timeout=5,使
连接
在重试两次后若未成功就因
超时
不再重传第3个包。
java web
tcp
长
连接
超时
时间
_常用java web容器http长
连接
超时
设置
本文详细介绍了HTTP长
连接
的工作原理及配置方法,包括keepalive_timeout的作用、HTTP与
TCP
的keep-alive的区别,以及如何在常见Java Web容器如Tomcat、Nginx和Apache中
设置
HTTP长
连接
。
鸿蒙网络编程系列5-
TCP
连接
超时
分析
本文介绍了
TCP
连接
超时
的相关知识,通过示例展示了在鸿蒙系统下使用不同
超时
时间
进行
TCP
连接
测试的过程,包括创建项目、配置权限、添加代码等步骤。最后对测试结果进行分析,得出默认
超时
时间
、不同
设置
下的实际
超时
时间
等结论,还解释了最大
超时
约65秒的原因。
网络编程
18,356
社区成员
64,161
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章