c#通过socket判断服务器连接是否正常

时间:2022-01-11 07:55:20
判断Socket是否连接上,需要通过发包来确认。
之前确认都是调用调用socket的connected属性,然而该属性是上次的连接是否成功的结果,不及时。 // 检查一个Socket是否可连接
private bool IsSocketConnected(Socket client)
{
bool blockingState = client.Blocking;
try
{
byte[] tmp = new byte[];
client.Blocking = false;
client.Send(tmp, , );
return true;
}
catch (SocketException e)
{
// 产生 10035 == WSAEWOULDBLOCK 错误,说明被阻止了,但是还是连接的
if (e.NativeErrorCode.Equals())
return false;
else
return true;
}
finally
{
client.Blocking = blockingState; // 恢复状态
}
}
C#客户端连接服务器前先判断服务器连接是否正常

        #region 采用Socket方式,测试服务器连接
/// <summary>
/// 采用Socket方式,测试服务器连接
/// </summary>
/// <param name="host">服务器主机名或IP</param>
/// <param name="port">端口号</param>
/// <param name="millisecondsTimeout">等待时间:毫秒</param>
/// <returns></returns>
public static bool TestConnection(string host,int port,int millisecondsTimeout)
{
int millisecondsTimeout = 5;//等待时间
TcpClient client = new TcpClient();
try
{
var ar = client.BeginConnect(host, port, null, null);
ar.AsyncWaitHandle.WaitOne(millisecondsTimeout);
return client.Connected;
}
catch (Exception e)
{
throw e;
}
finally
{
client.Close();
}
}
#endregion

切实解决socket连接掉线检测  

https://www.cnblogs.com/lonelyxmas/p/10878856.html