C#中修改socket通信超时

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

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

IAsyncResult connResult = s.BeginConnect(proxyIP, proxyport, null, null);
                connResult.AsyncWaitHandle.WaitOne(2000, true);  //等待2秒
                if (!connResult.IsCompleted)
                {
                    //处理连接不成功的动作
                    MessageBox.Show("连接失败,请检查IP和端口号是否正确", "错误");
                    s.Close();
                    return "flase";
                }

以上S是我实例化的socket,等待时间可以自己设置,在这里我设置的2s。

你可能感兴趣的:(网络编程)