3
我在这里构建了c#
示例https://github.com/coolaj86/fizzbuzz/blob/master/tcp-echo-csharp/Main.cs并针对netcat
运行它。在C#中正确处理“通过对等方重置连接”
当我与CTRL退出netcat
+ Ç它关闭套接字和我得到
Unhandled Exception: System.Net.Sockets.SocketException: Connection reset by peer
at System.Net.Sockets.Socket.EndReceive (IAsyncResult result) [0x00000] in <filename unknown>:0
at echo.AsynchronousSocketListener.ReadCallback (IAsyncResult ar) [0x00000] in <filename unknown>:0
在我用其他语言,所述FIN被表示为0字节的读出(或一个名为'FIN'或'end'的事件等),但是我修改了这个例子来打印出一个0字节的消息,我看不到消息。
如何处理客户端关闭连接?
我正在寻找诸如“使用System.Net.Foo.Bar.CloseHandler()
或System.Net.Foo.Bar.ErrorHandler()
”的答案。
这就是我问的问题。我如何处理异常? try/catch或Error事件回调在哪里? P.S. netcat用ctrl + c正常退出。在其他语言中,我得到了结束/ fin/close/0-bytes-read事件。 – CoolAJ86 2012-08-06 20:29:39
如果(bytesRead> 0){// 收到了一些资料,做出来 } 其他 {// 连接关闭进行清理 } 这是你在你的问题链接的代码实际上做。你可以在client.EndRecieve得到一个异常,所以在这里做一个try/catch块。 – dantix 2012-08-06 20:43:31
有没有办法在调用EndReceive之前检查客户端是否仍然打开?或者客户关闭时触发的回调? – CoolAJ86 2012-08-06 21:53:22