社区
网络编程
帖子详情
如果得知一个TCP连接的remote端已经不在网络上了?
bbdolly
2007-03-07 11:28:55
一个TCP连接(中间可能会有NAT存在)
双方会有较长时间不相互发数据
在不使用一些非标准的方法的前提下(自定义的主动探测),如何得知对方已经不在网络上了?
...全文
347
7
打赏
收藏
如果得知一个TCP连接的remote端已经不在网络上了?
一个TCP连接(中间可能会有NAT存在) 双方会有较长时间不相互发数据 在不使用一些非标准的方法的前提下(自定义的主动探测),如何得知对方已经不在网络上了?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
anjuta_c
2007-03-15
打赏
举报
回复
SO_KEEPALIVE选项会影响系统上所有的套接字,还是不要更改的好,况且设置好SO_KEEPALIVE后实际上还是发送了“心跳包”,这样做和应用层发送“心跳包”有区别吗?
标准做法还是在应用层发送“心跳包”。可你看一下unix 网络编程卷1。
ouyh12345
2007-03-07
打赏
举报
回复
BOOL bKeepAlive = TRUE;
nRet = ::setsockopt(m_sockDesc, SOL_SOCKET, SO_KEEPALIVE, (char*)&bKeepAlive, sizeof(bKeepAlive));
if (nRet !=0)
{
sprintf(m_pszError, "Winsock error : %s (Error Code %d)\n", "Socket SetOpt failed", WSAGetLastError());
return FALSE;
}
//设置KeepAlive检测时间和次数
TCP_KEEPALIVE inKeepAlive = {0}; //输入参数
unsigned long ulInLen = sizeof(TCP_KEEPALIVE);
TCP_KEEPALIVE outKeepAlive = {0}; //输出参数
unsigned long ulOutLen = sizeof(TCP_KEEPALIVE);
unsigned long ulBytesReturn = 0;
//设置socket的keep alive为10秒,并且发送次数为3次
inKeepAlive.onoff = 1;
inKeepAlive.keepaliveinterval = 10000; //两次KeepAlive探测间的时间间隔
inKeepAlive.keepalivetime = 3; //开始首次KeepAlive探测前的TCP空闭时间
nRet = WSAIoctl(m_sockDesc,
SIO_KEEPALIVE_VALS,
(LPVOID)&inKeepAlive,
ulInLen,
(LPVOID)&outKeepAlive,
ulOutLen,
&ulBytesReturn,
NULL,
NULL);
if(SOCKET_ERROR == nRet)
{
sprintf(m_pszError, "Winsock error : %s (Error Code %d)\n", "Nonblocking socket call error", WSAGetLastError());
return FALSE;
}
这样发送的心跳包是必须要回的.
bbdolly
2007-03-07
打赏
举报
回复
如何在对方没有发送数据过来的时候,主动发送tcp的应答包啊?
这种主动发送的应答包,remote方会在应答回来么?
谢过~~
Elysium
2007-03-07
打赏
举报
回复
自定义的主动探测?
可以发送应答包吧,如果连应答包也不发送,简单的ping也不通呀
张友邦
2007-03-07
打赏
举报
回复
做网络应用的时候这样的问题会经常碰到,我以前的处理办法是,不管对方是否已经断开,当要通信的时候去处理相应的exceptions。这样也能解决你要求的对方连接状态的问题。
bbdolly
2007-03-07
打赏
举报
回复
win2000 vc6 下套代码可以用么?
为啥我用了之后抓包发现没啥变化,还是啥数据都没有啊
bbdolly
2007-03-07
打赏
举报
回复
win2000 vc 下套代码可以用么?
为啥我用了之后抓包发现没啥变化啊
TCP
,
TCP
连接
建立,
TCP
连接
断开,Socket 编程
TCP
,
TCP
连接
建立,
TCP
连接
断开,Socket 编程
计算机
网络
-
TCP
篇
建⽴⼀个
TCP
连接
是需要客户
端
与服务器
端
达成上述三个信息的共识。 Socket:由 IP 地址和
端
⼝号组成 序列号:⽤来解决乱序问题等 窗⼝⼤⼩:⽤来做流量控制
TCP
四元组可以唯⼀的确定⼀个
连接
,四元组包括如下...
lwip无法
连接
指定个数
TCP
连接
问题
如题,一次测试中发现,lwip的
TCP
连接
控制块明明设置为26,设备作为服务器,电脑作为客户
端
去
连接
,但当
连接
19个之后发现再
连接
TCP
时,机器自动发送RST数据包,通过追踪发现是因为资源分配不足,
tcp
_alloc失败,后面...
【Linux
网络
编程笔记】
TCP
短
连接
产生大量TIME_WAIT导致无法对外建立新
TCP
连接
的原因及解决方法—基础知识篇
最近遇到
一个
线上报警:服务器出现大量TIME_WAIT导致其无法与下游模块建立新HTTP
连接
,在解决过程中,通过查阅经典教材和技术文章,加深了对
TCP
网络
问题的理解。作为笔记,记录于此。 备注:本文主要介绍
TCP
编程中...
不可不知的socket和
TCP
连接
过程
本文主要说明的是
TCP
连接
过程中,各个阶段对套接字的操作,希望能对没有
网络
编程基础的人理解套接字是什么、扮演的角色有所帮助。如发现错误,敬请指出 背景 1.完整的套接字格式{protocol,src_addr,src_port,...
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章