如何设置socket的连接超时??注意是连接超时,不是发送和接收数据超时.

luguanxiang 2005-06-03 09:33:07
我建立一个客户端socket连接服务端,如果主机不存在的话,超时时间为:20秒左右,我想把它改小一点,但不知道怎么改?这方面高手请指教!
...全文
395 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
luguanxiang 2005-06-13
  • 打赏
  • 举报
回复
再顶,这个问题真是要命哦
luguanxiang 2005-06-06
  • 打赏
  • 举报
回复
顶上去
luguanxiang 2005-06-05
  • 打赏
  • 举报
回复
高手都来看看啊,现在我必须用阻塞方式连接,但接收数据我用的异步的方式,如何设置连接超时呢?二楼兄弟的方法,我用了好像不行.望指教
dragonimp 2005-06-05
  • 打赏
  • 举报
回复
我也想知道同步怎么设置连接超时呀....
mba9001 2005-06-04
  • 打赏
  • 举报
回复
up
luguanxiang 2005-06-04
  • 打赏
  • 举报
回复
好像还是不行啊.我没有使用异步连接,是用的阻塞方式,socketEvent.WaitOne可以用吗?
wangsaokui 2005-06-03
  • 打赏
  • 举报
回复
ManualResetEvent socketEvent = new ManualResetEvent(false);
Socket sClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

public void Receive()
{
try
{
while(true)
{
try
{
if (!sClient.Connected)
{
sClient.BeginConnect(new IPEndPoint(IPAddress.Parse("192.168.0.1"), 10001),
new AsyncCallback(ConnectCallback),sClient);
socketEvent.WaitOne(10000,false);
}
socketEvent.Reset();
sClient.BeginReceive(buffer,0,buffer.Length,0,new AsyncCallback(ReceiveCallback),sClient);
socketEvent.WaitOne(10000,false);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}

socketEvent.WaitOne(10000,false);
这句的意思是如果超过10秒,就退出,如果需要重新连接,可以把false改为true,具体你可以参考MSDN中的WaitOne()

111,119

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧