c#通过socket判断服务器连接是否正常
判断Socket是否连接上,需要通过发包来确认。 之前确认都是调用调用socket的connected属性,然而该属性是上次的连接是否成功的结果,不及时。 // 检查一个Socket是否可连接 private bool IsSocketConnected(Socket client) { bool blockingState = client.Blocking; try { byte[] tmp = new byte[1]; client.Blocking = false; client.Send(tmp, 0, 0); return true; } catch (SocketException e) { // 产生 10035 == WSAEWOULDBLOCK 错误,说明被阻止了,但是还是连接的 if (e.NativeErrorCode.Equals(10035)) 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
https://www.cnblogs.com/lonelyxmas/p/10878856.html
作者:阿笨
【官方QQ一群:跟着阿笨一起玩NET(已满)】:422315558
【官方QQ二群:跟着阿笨一起玩C#(已满)】:574187616
【官方QQ三群:跟着阿笨一起玩ASP.NET(已满)】:967920586
【官方QQ四群:Asp.Net Core跨平台技术开发(可加入)】:829227829
【官方QQ五群:.NET Core跨平台开发技术(可加入)】:647639415
【网易云课堂】:https://study.163.com/provider/2544628/index.htm?share=2&shareId=2544628
【51CTO学院】:https://edu.51cto.com/sd/66c64
【微信公众号】:微信搜索:跟着阿笨一起玩NET

浙公网安备 33010602011771号