日期:2014-05-18  浏览次数:21135 次

SocketException怎么处理.异常问题!
写一个socket,传输数据一切正常.但是当一个客户端关闭窗口时,服务器端就出现了一个如下异常:
//----------------------------------------
System.Net.Sockets.SocketException: 远程主机强迫关闭了一个现有的连接。
  在 System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
  在 System.Net.Sockets.Socket.Receive(Byte[] buffer)
  在 server1._.Form1.serviceClinet() 位置 E:\linfile\C#file\socket1.0\server\server1.0\server1.0\Form1.cs:行号 169
关闭socket0
在 System.Net.Sockets.SocketException 中第一次偶然出现的“System.dll”类型的异常
在 System.Threading.ThreadAbortException 中第一次偶然出现的“mscorlib.dll”类型的异常
//----------------------------------------------

需且其它用户和服务器再通信后也会引发这个异常.请问如何解决.源码较长不好贴上来.

------解决方案--------------------
这个异常报的没错啊,你客户端关闭了,服务器端发现连接中断,而且中断的原因也告诉你了,这个都合符逻辑。

因此你的程序应该这样做:
1、服务端使用try...catch捕获这个异常后,把这个链接关闭;
2、客户端应该优化下代码,在正常退出的情况下,若碰到数据在发送中,应该正常的断开连接,释放端口再退出;