4

我在c#这里构建示例https://github.com/coolaj86/fizzbuzz/blob/master/tcp-echo-csharp/Main.cs并针对netcat.

netcat当我用CTRL+退出时,C它会关闭套接字,我得到

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”或“结束”等的事件),但我修改了示例以打印出一条消息以读取0 字节,我看不到任何消息。

如何处理客户端关闭连接?

我正在寻找诸如“使用System.Net.Foo.Bar.CloseHandler()System.Net.Foo.Bar.ErrorHandler()”之类的答案。

4

1 回答 1

1

我不确定,但我认为没有办法优雅地做到这一点。因为如果连接正确关闭,您会收到有关客户端断开连接的通知。但是通过 CTRL + C 中断程序执行不是这种情况。所以我建议你只处理异常来解决这个问题。

于 2012-08-06T19:53:01.013 回答