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向外發送數據的時候,就會出現“您的主機中的軟件中止了一個已建立的連接”
this socket connection was aborted
也可能是序列化錯誤導致的問題,類的某個屬性上需要DataMember這個Attribute