ServerSocket 的 backlog 表示最大缓冲队列

    // 像如下程序,只能顺序一个一个的处理客户端连接,如果同时有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();
        }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容