TCP丢包和异常断开。

mastersky 2010-05-26 12:06:32
在TCP通讯过程中,有时在服务器发送数据给某个客户端时,重试3次,依然没有回复,则该连接被异常断开,但是不久之后还能收到该客户端的数据,然后windows会发送RST中断该连接。

这种情况偶尔会出现。

分析原因,可能是1.数据未能发出去,2.客户端未收到数据(公网网关丢失)。

请问如何得知数据已从通过局域网网关发出去了呢?

可以通过监控软件监控本机,发现数据重传和收到客户端数据的所有情况。如何监控该数据包从本机到局域网网关到公网网关的情况呢?
...全文
810 23 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mit1208 2010-06-25
  • 打赏
  • 举报
回复
太强大了.只有留个脚丫
qiujunwang198577 2010-06-25
  • 打赏
  • 举报
回复
学习,路过,顶下
麦客来了 2010-06-25
  • 打赏
  • 举报
回复
MARK
tataishan 2010-06-25
  • 打赏
  • 举报
回复
接分的。。。
李_军 2010-06-19
  • 打赏
  • 举报
回复
自己采用底层socket写试试
bigbiga 2010-06-11
  • 打赏
  • 举报
回复
Indy是阻塞式的,windows收到数据,但是达到indy想要的结果,所以indy不会有返回的。

windows一向提昌非阻塞式,但需要线程和自己组合数据,而UNIX是阻塞式,开发简单。
sanguomi 2010-06-05
  • 打赏
  • 举报
回复
在TCP通讯过程中,有时在服务器发送数据给某个客户端时,重试3次,依然没有回复,则该连接被异常断开,但是不久之后还能收到该客户端的数据,然后windows会发送RST中断该连接。
--------------------------
用GETLASIT看有没有异常,
不喜欢用INDY,绕来绕去的, 不如自己写SOCKET清爽
sanguomi 2010-06-05
  • 打赏
  • 举报
回复
检查下看是不是你粘包了
MinxSoft 2010-06-05
  • 打赏
  • 举报
回复
最怕的是单片机的TCP/IP协议栈没有实现完整...那么,对于上位机来说就是一个噩梦
MinxSoft 2010-06-05
  • 打赏
  • 举报
回复
Socket断开往往只是一个"假象",Indy把Socket都封装了,更加看不到底层了;可以去看看WinSock2那些函数,例如setsockopt,可以设置在执行closesocket后,保留Socket一段时间,直到数据收发完毕.
xiaowei_001 2010-06-05
  • 打赏
  • 举报
回复
jf
回复内容太短了!
SQLDebug_Fan 2010-05-28
  • 打赏
  • 举报
回复
我想知道,都断开连接了,你怎么知道还有数据包发上来?是通过截包实现的吗?
mastersky 2010-05-28
  • 打赏
  • 举报
回复
看来是不会有人答得出来的。散了,来接分吧。
haitao 2010-05-28
  • 打赏
  • 举报
回复
网络环境,路由器-交换机-网线。。。。。。。。
imho888 2010-05-28
  • 打赏
  • 举报
回复
server端断开了,客户端没断开及时,只要你的端口是开着的,windows肯定是收到信息的
iqyely 2010-05-28
  • 打赏
  • 举报
回复
来学习下。
SQLDebug_Fan 2010-05-26
  • 打赏
  • 举报
回复
如果连接异常断开了,就不会再收到数据,另外你的重试3次是间隔多少?

你是不是用的INDY控件?
SQLDebug_Fan 2010-05-26
  • 打赏
  • 举报
回复
检查一下异常断开的原因,有时INDY报异常,但是没有真正断开,线程还在。
mastersky 2010-05-26
  • 打赏
  • 举报
回复
不行啊,客户端是单片机。
java程序员zbin 2010-05-26
  • 打赏
  • 举报
回复
可以试下,在原客户端建个SERVER端
加载更多回复(2)

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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