增加System.net.sockets.socket Connect的超时



我需要使用system.net.sockets.socket允许连接到FTP服务器,以花费很长时间 - 至少30秒,但可能更多。该代码总是按信号返回,但在20秒后未连接,这显然是内部默认值:

Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IAsyncResult result = socket.BeginConnect("128.0.0.1", 99, null, null);
bool signalled = result.AsyncWaitHandle.WaitOne(60000, true);

旧问题,但是我们有同样的问题,所以我将解决方案发布在这里。

Waitone超时可用于强制A 超时,而不是系统默认值,但是如果您想增加情况)您必须更改基础操作系统的TCP设置。

我们在Windows上遇到了这个问题,在那里我们遇到了21秒的超时限制。要更改此操作,您可以使用以下powerShell命令(以admin为admin运行PowerShell提示):

Set-NetTCPSetting -SettingName InternetCustom -MaxSynRetransmissions 4

默认值为2,它的有效TCP连接超时约为21秒。3个值将超时增加到约40秒,而4秒至90秒。可以在此处找到更多信息。

对于Linux,请查看本文:http://www.sekuda.com/overriding_the_default_linux_kernel_20_second_second_tcp_socket_connect_connect_timeout

看起来这可能是您要寻找的:http://www.codeproject.com/articles/31514/31514/implementation-of-connecting-aenecting-a-a-socketout

看来他正在使用

ManualResetEvent.WaitOne()

在超时的时间内阻止主线程。如果

IsConnectionSuccessful

是false(即,连接未按时或回调失败),当时间用完时,将抛出异常。

相关内容

  • 没有找到相关文章

最新更新