【发布时间】:2010-08-04 12:24:08
【问题描述】:
当我尝试连接到 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)
这是线程用来获取套接字的代码:
socket = new Socket(my_hostName, my_port);
TCP 服务器一次可以拥有的连接数是否有任何默认限制?如果不是怎么解决这类问题?
【问题讨论】:
-
您的服务器上处理连接的逻辑是什么?您是在使用线程池还是只是疯狂地产生线程?如果使用线程池,如果你没有关闭连接/完成请求,你可能会用完线程
-
不,我没有使用线程池。我一次启动一个线程。每个线程都会打开一个新连接。