TcpClient.Connect函数连接超时的问题

问题原述:

http://topic.csdn.net/t/20060616/15/4825920.html

 

调用TcpClient.Connect函数连接其他机器。我在一台机器上测试程序,对于连接根本无法连接(物理连接不通)的机器,该函数用时5秒左右返回,并捕获SocketException异常。我在另一台机器上测试时,Connect函数用时26秒左右的时间才返回。请问有没有方法设置Connect函数连接超时的时间,如果超过一定时间还没有连上则返回。

 

解决方法:

   写了个帮助类,用了线程池   
    
     
 

=================================  
  用法示例:   
   

在C#中,使用TcpClient连接网络时,可以通过设置TcpClient的Socket属性来配置连接超时连接超时通常用于指定在尝试连接到远程主机时允许的等待时间。如果在该时间范围内无法建立连接,则会抛出一个异常。以下是如何设置连接超时的步骤: 1. 创建TcpClient实例。 2. 获取TcpClient关联的Socket对象。 3. 使用Socket对象的`ConnectTimeout`属性来设置超时时间(单位为毫秒)。 4. 调用TcpClient的`Connect`方法尝试连接到远程主机。 请注意,由于Socket的`Connect`方法是同步的,所以当超时发生时,它会抛出一个`SocketException`异常。为了避免阻塞主线程,建议在后台线程中执行连接操作。 示例代码如下: ```csharp using System; using System.Net.Sockets; using System.Threading; public class TcpClientExample { public void ConnectToServer(string host, int port, int timeout) { TcpClient client = new TcpClient(); try { // 设置超时时间 client.Client.ReceiveTimeout = timeout; client.Client.SendTimeout = timeout; // 尝试连接到服务器 client.Connect(host, port); // 连接成功后的操作 Console.WriteLine("连接成功!"); // ... 进行数据交互等操作 ... } catch (SocketException ex) { // 处理连接超时连接错误 Console.WriteLine("连接服务器失败: " + ex.Message); } finally { client.Close(); } } } class Program { static void Main() { TcpClientExample example = new TcpClientExample(); // 假设连接超时设置为5000毫秒(即5秒) example.ConnectToServer("127.0.0.1", 12345, 5000); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值