美文网首页
ServerSocket 的 backlog 表示最大缓冲队列

ServerSocket 的 backlog 表示最大缓冲队列

作者: 赵峰涛 | 来源:发表于2017-11-11 22:53 被阅读0次
    // 像如下程序,只能顺序一个一个的处理客户端连接,如果同时有3个客户端发起请求
    // 此时会处理一个,将剩余两个放到缓冲队列,如果同时有4个客户端发起请求,则会有
    // 一个客户端连接失败
    @Test
    public void testServerBio(){
        try(ServerSocket serverSocket = new ServerSocket(8080,2);){
            while(true){
                Socket socket = serverSocket.accept();
                SocketAddress remoteSocketAddress = socket.getRemoteSocketAddress();
                System.out.println(remoteSocketAddress);
                InputStream in = socket.getInputStream();
                int recvSize = 0;
                byte[] recvBuf = new byte[1024];
                while((recvSize = in.read(recvBuf)) != -1){
                    byte[] readBuf = new byte[recvSize];
                    System.arraycopy(recvBuf,0,readBuf,0,recvSize);
                    CharsetDecoder decoder = StandardCharsets.UTF_8.newDecoder();
                    System.out.println("recv:" + decoder.decode(ByteBuffer.wrap(readBuf)) );
                }
            }
        }catch (IOException e){
            e.printStackTrace();
        }
    }

相关文章

网友评论

      本文标题:ServerSocket 的 backlog 表示最大缓冲队列

      本文链接:https://www.haomeiwen.com/subject/sewgmxtx.html