Networking 禁用TCP SYN重新传输

Networking 禁用TCP SYN重新传输,networking,tcp,Networking,Tcp,我正在开发一个客户端,它通过TCP连接到服务器。服务器配置为,如果一台服务器停机,则与另一台服务器建立连接 我的要求是,如果在2秒内未与第一台服务器建立TCP连接,则客户端需要与第二台服务器建立连接 以下是我根据测试得出的观察结果- TCP SYN消息由客户端发送到第一台服务器以建立连接。由于第一台服务器关闭,在1s后,TCP SYN重传被发送到第一台服务器。2秒后(由于处理和网络延迟),TCP SYN消息由客户端发送到第二台服务器。所以需要3秒(1s+2s)才能将SYN消息发送到第二台服务器,

我正在开发一个客户端,它通过TCP连接到服务器。服务器配置为,如果一台服务器停机,则与另一台服务器建立连接

我的要求是,如果在2秒内未与第一台服务器建立TCP连接,则客户端需要与第二台服务器建立连接

以下是我根据测试得出的观察结果- TCP SYN消息由客户端发送到第一台服务器以建立连接。由于第一台服务器关闭,在1s后,TCP SYN重传被发送到第一台服务器。2秒后(由于处理和网络延迟),TCP SYN消息由客户端发送到第二台服务器。所以需要3秒(1s+2s)才能将SYN消息发送到第二台服务器,这不是我想要的。我希望TCP SYN消息在2秒内发送到第二台服务器

为了在2秒内将TCP SYN消息发送到第二台服务器,我希望避免TCP SYN重传

我尝试在/etc/sysctl.conf中设置net.ipv4.tcp\u syn\u retries=0。但我得到1个TCP SYN重传

那么,有没有办法在不更改内核源的情况下禁用从用户空间重新传输TCP SYN

我的要求是,如果在2秒内未与第一台服务器建立TCP连接,则客户端需要与第二台服务器建立连接


在这种情况下,只需在客户端执行连接,超时时间为2秒,如果连接未成功,请使用其他服务器重试。关闭套接字后,内核将停止尝试连接到第一台服务器。这比摆弄TCP的内置可靠性行为和定时要好得多,更独立于特定平台。

要实现这一点,需要将套接字置于非阻塞模式,发出connect(),并使用select()等待可写性,以及所需的超时。或者使用Java:-)