当我尝试连接到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服务器一次可以拥有的连接数是否有默认限制?如果不是如何解决这类问题?
如果服务器的ServerSocket绑定到您要连接的端口但是不接受连接,则可能会出现连接超时.
如果它始终与第250个连接发生,则可能服务器设置为仅接受250个连接.有人必须断开连接才能连接.或者你可以增加超时; 而不是像这样创建套接字,使用空构造函数创建套接字,然后使用connect()方法:
Socket s = new Socket();
s.connect(new InetSocketAddress(my_hostName, my_port), 90000);
默认连接超时为30秒; 上面的代码等待90秒连接,如果无法建立连接则抛出异常.
您还可以设置较低的连接超时,并在捕获该异常时执行其他操作...