社区
网络编程
帖子详情
如果得知一个TCP连接的remote端已经不在网络上了?
bbdolly
2007-03-07 11:28:55
一个TCP连接(中间可能会有NAT存在)
双方会有较长时间不相互发数据
在不使用一些非标准的方法的前提下(自定义的主动探测),如何得知对方已经不在网络上了?
...全文
354
7
打赏
收藏
如果得知一个TCP连接的remote端已经不在网络上了?
一个TCP连接(中间可能会有NAT存在) 双方会有较长时间不相互发数据 在不使用一些非标准的方法的前提下(自定义的主动探测),如何得知对方已经不在网络上了?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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 下套代码可以用么?
为啥我用了之后抓包发现没啥变化啊
hal库基于esp8266,bw16 AT指令进行多
连接
分别做成服务器,客户
端
,
连接
UDP和返回值的处理
BW16 AT指令是ESP8266上的一种扩展,用于管理其WiFi
连接
功能,包括设置Wi-Fi模式(客户
端
或服务器),
连接
到Wi-Fi
网络
,以及开启和关闭UDP或
TCP
连接
。 在建立多
连接
时,我们首先要设置ESP8266工作在Station(客户
端
...
【
网络
】
TCP
断开
连接
客户
端
拔掉网线后,并不会直接影响
TCP
连接
状态。所以,拔掉网线后,
TCP
连接
是否还会存在,关键要看拔掉网线之后,有没有进行数据传输。有数据传输的情况:●在客户
端
拔掉网线后,如果服务
端
发送了数据报文,那么...
TCP
,
TCP
连接
建立,
TCP
连接
断开,Socket 编程
TCP
,
TCP
连接
建立,
TCP
连接
断开,Socket 编程
计算机
网络
-
TCP
篇
建⽴⼀个
TCP
连接
是需要客户
端
与服务器
端
达成上述三个信息的共识。 Socket:由 IP 地址和
端
⼝号组成 序列号:⽤来解决乱序问题等 窗⼝⼤⼩:⽤来做流量控制
TCP
四元组可以唯⼀的确定⼀个
连接
,四元组包括如下...
【
网络
】
TCP
建立
连接
1.2.4.***为什么每次建立
TCP
连接
时,初始化的序列号都要求不一样呢?1.2.1.
网络编程
18,363
社区成员
64,187
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章