如何控制C#Socket的连接超时时间

 我来答
po...l@163.com
2017-11-01 · TA获得超过148个赞
知道小有建树答主
回答量:410
采纳率:8%
帮助的人:138万
展开全部
1.使用BeginConnect方法
IAsyncResult connResult = mySocket.BeginConnect(yourAddress, yourPort, null, null);
connResult.AsyncWaitHandle.WaitOne(2000, true); //等待2秒
if (!connResult.IsCompleted)
{
  mySocket.Close();
  //处理连接不成功的动作
}
else
{

  //处理连接成功的动作
}

这种方法很好的控制了连接超时时间而且代码非常简单,但是界面仍然会有2秒的卡死产生。如果想解决该问题,则需要创建一个额外的线程来执行WaitOne方法。
2.使用ConnectAsync方法
SocketAsyncEventArgs e = new SocketAsyncEventArgs();
e.Completed += new EventHandler<SocketAsyncEventArgs>(AsyncConnected);
e.RemoteEndPoint = new IPEndPoint(IPAddress.Parse(yourAddress), yourPort);
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式