【高分求!!在线等!!】怎么设置TcpClient的连接超时时间啊?

Mi_Bo 2006-03-28 11:11:09
我想实现判断与指定点的网络通断,用TcpClient连接该点的Server,如果超时即返回disconnect,可是怎么设置TcpClient的连接超时时间啊?用SendTimeout和ReceivedTimeout都没用啊,程序总是在大约25秒的时候超时,时间太长了啊,怎么设得短些?
请高手指点!!
...全文
572 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
east_master 2006-04-19
  • 打赏
  • 举报
回复
已发送
cuiyingfeng 2006-04-15
  • 打赏
  • 举报
回复
mark
Daw100 2006-04-15
  • 打赏
  • 举报
回复
我跟楼主一样的问题,希望解决此问题的高手说一下方法!
Mi_Bo 2006-03-30
  • 打赏
  • 举报
回复
还是不行啊,设置SendTimeout和ReceiveTimeout都没用,还有LingerOption也没用啊.哪位高手给个例子参考一下啊,谢谢!!!!
tiaoci 2006-03-28
  • 打赏
  • 举报
回复
应当就是这两个值设置的,你是怎么设置的?

注意那个TimeOut的值是毫秒数,如果你要设置一分钟超时

需要都设置成 60000 才对
aiur2000 2006-03-28
  • 打赏
  • 举报
回复
SendTimeout 获取或设置 TcpClient 等待发送操作成功完成的时间量

很显然不是你想要的连接超时时间
aiur2000 2006-03-28
  • 打赏
  • 举报
回复
当仍然要发送数据时,此属性控制 TCP 连接在对 Close 调用后仍保持打开的时间长度。当调用 Write 方法时,将数据放置在输出网络缓冲区中。此属性可用来确保在 Close 方法结束该连接之前,将这些数据发送到远程主机。

若要启用逗留,请创建包含所需值的 LingerOption,并将此属性设置为该 LingerOption。如果 LingerOption 的 Enabled 属性为 true,则将数据发送到网络的超时期限为 LingerOption.LingerTime 秒。一旦数据被发送或者如果超时过期,则将关闭连接,而所有未发送的数据都将丢失。如果 LingerOption 的 Enabled 属性为 false,则在调用 Close 方法之后,即使仍有未发送的数据,连接也会立即关闭。

Mi_Bo 2006-03-28
  • 打赏
  • 举报
回复
13:48:56
System.Net.Sockets.SocketException: 由于连接方在一段时间后没有正确答复或连接的主
机没有反应,连接尝试失败。
at System.Net.Sockets.TcpClient.Connect(String hostname, Int32 port)
at ConsoleApplication1.Class1.Main(String[] args) in d:\visual studio project
s\consoleapplication1\consoleapplication1\class1.cs:line 25
13:49:21
Mi_Bo 2006-03-28
  • 打赏
  • 举报
回复
就用这段代码看吧,无论怎么改两个timeout,在我的机器上超时的时间总是大约26秒钟.
static void Main(string[] args)
{
TcpClient tc = new TcpClient();
tc.SendTimeout = 3000;
tc.ReceiveTimeout = 3000;

try
{
Console.WriteLine(DateTime.Now.ToLongTimeString());
tc.Connect("192.168.0.111", 233);

}
catch(Exception e)
{
Console.WriteLine(e.ToString());
Console.WriteLine(DateTime.Now.ToLongTimeString());

}

//
}

110,499

社区成员

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

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

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