如何控制C#Socket的连接超时时间
1个回答
展开全部
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);
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);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询