gpt4 book ai didi

c# - 增加 System.Net.Sockets.Socket 连接超时

转载 作者:行者123 更新时间:2023-12-03 20:44:10 25 4
gpt4 key购买 nike

我需要允许使用 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 超时可用于强制低于系统默认超时,但如果您想增加超时(即在您的系统中超过 20 秒例)您必须更改底层操作系统的 TCP 设置。

我们在 Windows 上遇到了这个问题,我们遇到了 21 秒的硬超时限制。要更改此设置,您可以使用以下 PowerShell 命令(以管理员身份运行 PowerShell 提示符):

Set-NetTCPSetting -SettingName InternetCustom -MaxSynRetransmissions 4

默认值为 2,这会产生大约 21 秒的有效 TCP 连接超时。值 3 将超时增加到大约 40 秒,4 增加到大约 90 秒。可以找到更多信息 here .

对于 Linux,请查看这篇文章: http://www.sekuda.com/overriding_the_default_linux_kernel_20_second_tcp_socket_connect_timeout

关于c# - 增加 System.Net.Sockets.Socket 连接超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22341885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com