C# · 12月 23, 2021



The value of the Connected property
reflects the state of the connection
as of the most recent operation. If
you need to determine the current
state of the connection,make a
nonblocking,zero-byte Send call. If
the call returns successfully or
throws a WAEWOULDBLOCK error code
(10035),then the socket is still
connected; otherwise,the socket is no
longer connected.@H_419_14@

我需要确定连接的当前状态 – 如何进行非阻塞,零字节发送调用?@H_419_14@解决方法 Socket.Connected属性(至少.NET 3.5版本)的MSDN文档底部的示例显示了如何执行此操作: // .Connect throws an exception if unsuccessfulclient.Connect(anEndPoint);// This is how you can determine whether a socket is still connected.bool blockingState = client.Blocking;try{ byte [] tmp = new byte[1]; client.Blocking = false; client.Send(tmp,0); Console.WriteLine(“Connected!”);}catch (SocketException e) { // 10035 == WSAEWOULDBLOCK if (e.NativeErrorCode.Equals(10035)) Console.WriteLine(“Still Connected,but the Send would block”); else { Console.WriteLine(“Disconnected: error code {0}!”,e.NativeErrorCode); }}finally{ client.Blocking = blockingState;} Console.WriteLine(“Connected: {0}”,client.Connected);