java.net.SocketException连接超时错误

jgg*_*jgg 1 java sockets

当我尝试连接到TCP服务器时,我遇到了以下错误.我的程序试图使用不同的线程打开大约300-400个连接,这发生在第250个线程中.每个线程使用自己的连接来发送和接收数据.

java.net.SocketException: Connection timed out:could be due to invalid address
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:372)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:233)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:220)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:385)
Run Code Online (Sandbox Code Playgroud)

这是我用来获取套接字的代码:

socket = new Socket(my_hostName, my_port);
Run Code Online (Sandbox Code Playgroud)

TCP服务器一次可以拥有的连接数是否有默认限制?如果不是如何解决这类问题?

Cho*_*hos 5

如果服务器的ServerSocket绑定到您要连接的端口但是不接受连接,则可能会出现连接超时.

如果它始终与第250个连接发生,则可能服务器设置为仅接受250个连接.有人必须断开连接才能连接.或者你可以增加超时; 而不是像这样创建套接字,使用空构造函数创建套接字,然后使用connect()方法:

Socket s = new Socket(); s.connect(new InetSocketAddress(my_hostName, my_port), 90000);

默认连接超时为30秒; 上面的代码等待90秒连接,如果无法建立连接则抛出异常.

您还可以设置较低的连接超时,并在捕获该异常时执行其他操作...