C# Socket 您的主机中的软件中止了一个已建立的连接 An established connection was aborted by the software in your host ma...

本文针对服务端接收客户端数据时出现的“ConnectionAborted”异常进行了分析,并提出了有效的解决方案。建议在接收完数据后退出死循环避免Receive函数阻塞,同时在关闭客户端前通知服务端即将断开连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

http://tieba.baidu.com/p/3223234493

问题:

服务端在接收客户端数据的时候,抛了个异常出来:
System.Net.Sockets.SocketException: 您的主机中的软件中止了一个已建立的连接。   //An established connection was aborted by the software in your host machine
在 System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 size, SocketFlags socketFlags)
在 NetWorkingSerivce.ReceiveThread.ReceiveData(Object userstart) 位置 f:\个人项目\NetWorkingSerivce\NetWorkingSerivce\ReceiveThread.cs:行号 53

 

解答:

玩几天我刚编了一个局域网内多线程文件传输的程序,是winform的。也遇到过你的问题。

如果你的服务器端(文件接收方)Receive数据时,关闭了客户端(文件发送端)就会强制关闭连接,就会出现上面的错误提示。

建议你在接收完数据后退出死循环不要让Receive函数阻塞住,关闭客户端(文件发送端)前建议发送一个消息告诉服务器端(文件接收方)“我要断开连接了”,然后两方都关闭连接close。

 

 

服务端在接收客户端数据的时候,得到了ConnectionAborted的异常

而服务端在遇到这个异常的时候,会主动关闭和客户端的连接

之后,服务端再使用这个socket向外发送数据的时候,就会出现“您的主机中的软件中止了一个已建立的连接”

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值