推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

处理Socket网络异常断开的方法

更新时间:2019-11-19 14:51:58 大小:136K 上传用户:xuzhen1查看TA发布的资源 标签:socket网络异常断开 下载积分:0分 评价赚积分 (如何评价?) 收藏 评论(0) 举报

资料介绍

最近我负责一个IM项目的开发,服务端和客户端采用TCP协议连接。服务端采用C#开发,客户端采用Delphi开发。在服务端开发中我碰到了各种各样的网络异常断开现象。在处理这些异常的时候有了一些心得,现在写出来和大家分享一下。那网络异常断开原因主要有那些呢?归纳起来主要有以下两种:

1、客户端程序异常。

对于这种情况,我们很好处理,因为客户端程序异常退出会在服务端引发ConnectionReset的Socket 异常(就是WinSock2中的10054异常)。只要在服务端处理这个异常就可以了。

2、网络链路异常。

如:网线拔出、交换机掉电、客户端机器掉电。当出现这些情况的时候服务端不会出现任何异常。这样的话上面的代码就不能处理这种情况了。对于这种情况在MSDN里面是这样处理的,我在这里贴出MSDN的原文:

如果您需要确定连接的当前状态,请进行非阻止、零字节的Send调用。如果该调用成功返回或引发WAEWOULDBLOCK错误代码(10035),则该套接字仍然处于连接状态;否则,该套接字不再处于连接状态。

但是我在实际应用中发现,MSDN说的这种处理方法在很多时候根本无效,无法检测出网络已经异常断开了。那我们该怎么办呢?


部分文件列表

文件名 大小
处理Socket网络异常断开的方法.pdf 136K

部分页面预览

(完整内容请下载后查看)

全部评论(0)

暂无评论