我的ServerSocket启动后,客户端同时启动100个以上线程去请求它时,中途经常会有
java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
抛出,大家分析下是什么原因呢?
可以设置什么参数来改进吗?

解决方案 »

  1.   

    补充说明:  随机端口就是说某个程序在一定的允许端口范围内由OS随机分配的一个端口号。尽管计算机端口范围有1--65534个。但许多端口已经预定使用(意思就是说OS在随机分配时不会把它们考虑进去),同时OS是比较小气的,它不会说因为你的程序要用到端口,就把所有剩余可用的端口做为一个随机范围任意挑选!而是只选定一小部分区域进行分配和回收再利用,如此循环。  如果欲详细了解端口知识,你百度一下吧!
      

  2.   

    socket在服务端是同一个端口啊,同一个端口同时接收多个请求,感觉是有个上限值的问题存在吧?
      

  3.   

    有可能,但是我设置了,让客户端
    socket.connect(remoteAddr, 60000);  //等待建立连接的超时时间为1分钟 
    有个等待呢
      

  4.   

    windows系统对端口数量有限制的,好像只有2000多个可用,而且每个端口的可重用时间也是挺长的,好像是2分钟。可以修改注册表改的。
      

  5.   

    Socket的话,建议你尝试去用下mina,可以节约你很多麻烦
      

  6.   

    cmd then enter netstat -a