关于C#Socket的Connect连接失败后等待时间过长问题

关于C#Socket的Connect连接失败后等待时间过长问题

  • 问题根结
  • 解决问题

问题根结

在客户端连接服务器时,未连接上服务器时,代码会卡在socket.Connect( );
这一行中。大约会卡住20到30秒,甚至更多。

解决问题

好像是因为C#里没有关于设置Connect超时的时间。
所以将socket.Connect( )删掉,换成以下异步方式代码

//创建负责通信的Socket
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress ip = IPAddress.Parse("192.168.255.1");

//定义IP地址和端口号
IPEndPoint point = new IPEndPoint(ip, 10000);

//获得要连接的远程服务器应用程序的IP地址和端口号
//socket.Connect(point);

//异步方式进行连接的远程服务器的IP地址和端口号
IAsyncResult result = socket.BeginConnect(point, null, null);

result.AsyncWaitHandle.WaitOne(500);

可以设置具体的时间来控制其等待的时间,单位:毫秒。

如果有其他更好的方式解决或者有相关错误,烦请各位大佬帮帮忙,告诉小弟一声。

你可能感兴趣的:(C#问题与解决,c#)