C#中修改socket通信超时

关于C#中socket通信异常的超时时间问题

由于工作需求经常会测试socks5或http代理IP是否可用,在没有自己编写代理程序之前一直使用的QQ上自带
的测试软件,但是一旦IP和端口号不通的情况下,就会导致长时间的卡死现象,只有关闭QQ再次打开才能重新进行测试,于是今天了解一下原理记下来作为笔记。
QQ测试如图:
此为测试不通的情况
在网上找到了原因,socket通信的超时时间无法改变,在C#中就是Connect函数的参数,是系统内核决定的,而较为简单的方法就是用一下代码代替Connect:

IAsyncResult connResult = s.BeginConnect(proxyIP, proxyport, null, null);
                connResult.AsyncWaitHandle.WaitOne(2000, true);  //等待2秒
                if (!connResult.IsCompleted)
                {
  
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C# Socket 类是用于在网络上进行通信的核心类。它提供了一种通用的方法来与其他计算机上的应用程序进行通信。使用 Socket 类,您可以编写客户端和服务器应用程序,这些应用程序可以在本地计算机或 Internet 上运行。 以下是使用 C# Socket 的基本步骤: 1. 创建一个 Socket 实例。可以通过调用 Socket 类的构造函数来实现。 2. 定义一个 IP 地址和端口号,以便连接到远程主机。可以使用 IPAddress 类来表示 IP 地址,使用 IPEndPoint 类来表示主机和端口号的组合。 3. 通过调用 Socket 实例的 Connect() 方法来连接到远程主机。 4. 使用 Socket 实例的 Send() 方法将数据发送到远程主机。 5. 使用 Socket 实例的 Receive() 方法从远程主机接收数据。 6. 在完成通信后,使用 Socket 实例的 Shutdown() 方法关闭连接。 以下是一个基本的使用 C# Socket 的客户端代码示例: ```csharp using System; using System.Net; using System.Net.Sockets; using System.Text; public class Client { public static void Main() { // 创建一个 Socket 实例 Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); // 定义远程主机的 IP 地址和端口号 IPAddress ipAddress = IPAddress.Parse("127.0.0.1"); int port = 12345; IPEndPoint remoteEP = new IPEndPoint(ipAddress, port); // 连接到远程主机 clientSocket.Connect(remoteEP); // 发送数据到远程主机 string message = "Hello, world!"; byte[] data = Encoding.ASCII.GetBytes(message); clientSocket.Send(data); // 从远程主机接收数据 byte[] buffer = new byte[1024]; int bytesReceived = clientSocket.Receive(buffer); string response = Encoding.ASCII.GetString(buffer, 0, bytesReceived); Console.WriteLine("Received: {0}", response); // 关闭连接 clientSocket.Shutdown(SocketShutdown.Both); clientSocket.Close(); } } ``` 以上代码创建了一个客户端 Socket 实例,并将其连接到本地主机上的端口号为 12345 的服务器。然后,它发送一条消息到服务器,并从服务器接收响应。最后,它关闭连接。 注意,在实际应用程序,您可能需要处理一些异常情况,例如连接失败或数据接收超时等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值