java - 通过 telnet 连接时出现连接超时

标签 java serversocket connection-timeout apache-commons-net

我正在编写一个 telnetclient 示例,使用 apache-commons-net.2.0.jar 使用 telnet 协议(protocol)连接到目标。 如果主机已启动并正在运行,则与主机建立连接的 jar 没有问题。如果我重新启动系统并尝试连接到主机 telnetclient 将抛出连接超时异常。

telnetClient.setConnectionTimoeout(180 * 1000) --> 设置180秒连接超时 telnetClient.setDefaultTimoeout(180 * 1000)

Telnet 客户端等待时间不超过 180 秒。它在 30 秒(大约)后抛出连接超时异常。 我尝试使用 commons-net-3.0.jar 的示例并得到相同的异常。 根据我的理解,如果主机未启动,setConnectionTimeout 应该等待最多 180 秒。

  import java.io.IOException;
import org.apache.commons.net.telnet.TelnetClient;
import java.net.*;

class TelnetClientExample
{
    public static void main(String[] args)
    {
    System.out.println("Started");
        TelnetClient telnet;
        telnet = new TelnetClient();
        try
        {
            telnet.setConnectTimeout(1800000);
        telnet.setDefaultTimeout(1800000);
        telnet.connect(InetAddress.getByName("hostname"),23);
            //telnet.connect("ipaddress", 23);
        System.out.println("Connected");

        }
        catch (IOException e)
        {
            e.printStackTrace();
        System.out.println("Connection timeout = "+telnet.getConnectTimeout());
            System.exit(1);
        }
    try
        {
            telnet.disconnect();
        }
        catch (IOException e)
        {
            e.printStackTrace();
            System.exit(1);
        }
        System.exit(0);
    }
}

错误:

Started
java.net.ConnectException: Connection timed out
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
    at java.net.Socket.connect(Socket.java:579)
    at org.apache.commons.net.SocketClient.connect(SocketClient.java:182)
    at TelnetClientExample.main(TelnetClientExample.java:17)

提前致谢..

最佳答案

您无法以任何方式将 TCP 连接超时增加到超出平台默认值(大约一分钟)。你只能减少它。与 Javadoc 在多处所说的相反,零连接超时并不意味着无穷大,它意味着平台默认值。

关于java - 通过 telnet 连接时出现连接超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28293091/

相关文章:

java - 将它部署到 tomcat 后,Jhipster 注册表 url 是什么?

java - 如何使用 CAS 限制用户登录特定应用程序?

java - 连接两个客户端套接字

javascript - Node.js:http 请求在 1 分钟后超时

http - 什么是 http 请求期间的连接超时

java - 如何从它本身(也是主类)更新GUI?

java - 如何从 proc_open 保存进程资源以便稍后检查状态?

java - 我在服务器套接字上接受客户端连接时捕获了 IOException。现在怎么办?

JAVA Socket编程死循环

java - 用于连接超时和打开连接数的 Netty channel 配置