本地网络编程实践

 

1 已经实现一个基本的多线程服务器,并发处理多个客户请求。(服务端线程池使用4000个,客户端启动4000个连接,连接数大会有出异常的可能)

启动多个socket客户端 连接多线程服务器,当数量太大时,出现了java.net.BindException: Address already in use: connect
 异常,代码如下:

for (int i = 0; i < 4000; i++) {
   socket = new Socket("127.0.0.1", 8888);
   out = new PrintWriter(socket.getOutputStream(), true);
   out.println(i + "号");
  }

new Socket的时候就不会去找未用端口号吗?客户端 端口号如何分配

2 使用nio实现一个多线程服务器,并发处理4000多个客户端请求。出现了java.net.SocketException: No buffer space available (maximum connections reached?): connect,原因是操作系统socket资源耗尽。

有时候也会出现端口已被占用的情况,同上。因为new socket的时候是随机分配端口号,重复了。

 

你可能感兴趣的:(java,网络编程)