On connect, the JVM (Java Virtual Machine) tries to resolve the hostname to IP/port. Windows tries a netbios ns query on UDP (User Datagram Protocol) port 137 with a timeout of 1.5 seconds, ignores any ICMP (Internet Control Message Protocol) port unreachable packets and repeats this two more times, adding up to a value of 4.5 seconds. I suggest putting critical hostnames in your HOSTS file to make sure they are resolved quickly. Another possibility is turning off NETBIOS altogether and running pure TCP/IP on your LAN (Local Area Network).
目前这仍然是一个问题吗?因为我正在研究心跳传感器,我很好奇。
最佳答案
您的引用不是规范性引用,只是另一个爱好网站,在这种情况下它是完全错误的。这些都与 setSoTimeout() 无关。他完全混淆了名称解析时间、连接时间和读取时间。 setSoTimeout() 设置读取超时,并且不受他描述的恶作剧的影响,无论准确与否,这甚至不会在连接时发生,正如他所说:它们会在名称解析时发生。
我向你保证,这远非该网站甚至该页面上唯一的困惑。十年前,我告诉他此页面上的几个错误,以及相当多的其他错误,所有这些错误至今仍未更正,这让您了解该网站的准确性、最新性和内容审查机制。他唯一的 react 就是对我说了一句粗鲁的话。作为同行评审机制缺乏说服力。
坚持使用权威来源。
关于java - Windows 会干扰 Java 的 Socket.setSOTimeout 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15457569/