社区
网络编程
帖子详情
如何设置tcp的连接超时时间?
lugangxyz
2004-07-07 02:13:20
setsockopt(sockServer,SOL_SOCKET,SO_SNDTIMEO,(char*)&timeout,sizeof(timeout));
好像不行
...全文
3455
5
打赏
收藏
如何设置tcp的连接超时时间?
setsockopt(sockServer,SOL_SOCKET,SO_SNDTIMEO,(char*)&timeout,sizeof(timeout)); 好像不行
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
Socket编程例子
解决这些问题通常需要
设置
合适的
超时
时间
、检查网络状况、避免使用已被占用的端口,以及正确处理异常情况。 总结,Socket编程是构建网络应用的基础,理解其工作原理和操作步骤对开发者来说至关重要。通过...
java
tcp
连接
超时
时间
设置
_如何在Socket建立
连接
时
设置
最大
超时
时间
?
前言在jdk1.4及以前版本中,从Socket中读取数据时,读取数据过程是阻塞进行的,且阻塞
时间
取决于数据发送方,但是通过
设置
读取数据最大
超时
时间
后,就不会一直处于阻塞状态。当然,1.4版本API中加入了NIO技术,可以...
TCP
连接
超时
处理
然后使用select或者epoll来监测socket的写事件,如果
超时
时间
内没有写事件到达,说明
连接
超时
。如果有写事件时,需要获取socket错误码,错误为0时表示
连接
成功,错误码不为0时表示
连接
失败。但是对于应用程序来说,...
java
tcp
客户端长
连接
超时
时间
_
TCP
连接
的
超时
时间
无论你用任何语言或者是网络库,你都可以
设置
网络操作的
超时
时间
,特别是connect、read、write的
超时
时间
。你可以在代码中把
超时
时间
设置
任意大小值,但是connect方法会有一点特殊。connect的
超时
时间
在任意的内核...
Linux 建立
TCP
连接
的
超时
时间
分析
Linux 建立
TCP
连接
的
超时
时间
分析 Linux 建立
TCP
连接
的
超时
时间
分析 概述
超时
分析
超时
验证 如何改进 概述 Linux 系统默认的建立
TCP
连接
的
超时
时间
为 127 秒,对于许多客户端来说,这个
时间
都...
网络编程
18,363
社区成员
64,187
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章