在使用网络开发中,{BANNED}最佳初直接使用了ClientSocket.Connect(endPoint) ;
这个存在一个问题,connect时,如果对方server没有打开,需要好长时间才会返回一个异常,查了下,好像说是默认20s,这个用户体验就会很差。
搜索了下,找到了一套解决方案,直接贴出来
IAsyncResult connResult = ClientSocket.BeginConnect(endPoint, null, null);
//WaitHandle.WaitOne 方法阻止当前线程,直到当前的 WaitHandle 收到信号
connResult.AsyncWaitHandle.WaitOne(2000, true); //等待2秒
if (!connResult.IsCompleted)
{
ClientSocket.Close();
return false;
//处理连接不成功的动作
}
else
{
//处理连接成功的动作
}
解释下,就是不要直接使用connect方法,使用BeginConnect方法,再调用WaitOne,等待2s即可,当2s未连接上时,就直接返回了,当然这个可以更快,再快的我也没试过,可以试试。
阅读(308) | 评论(0) | 转发(0) |