如何将数据从TCP套接字转换为ByteBuffer

我需要将来自套接字的传入数据传入ByteBuffer,我不知道该怎么做。 我是这个领域的新手,因此不确定最好的开始方式。 我找到了以下内容,但这不是我想要的,因为它获取了数据,但我需要将所有数据都存在于bytebuffer中以用于其他目的。

ServerSocket welcomeSocket = new ServerSocket(Integer.parseInt(ibmPort)); while (true) { Socket connectionSocket = welcomeSocket.accept(); BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream())); DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream()); clientSentence = inFromClient.readLine(); System.out.println("Received: " + clientSentence); setRequestDataFromCT(clientSentence); capitalizedSentence = clientSentence.toUpperCase() + '\n'; outToClient.writeBytes(capitalizedSentence); } 

此代码将读取所有字节并将它们存储在ByteBuffer中,您可能必须调整bufferSize以存储所需的所有数据。

 int bufferSize = 8192; ServerSocket welcomeSocket = new ServerSocket(Integer.parseInt(ibmPort)); while (true) { Socket connectionSocket = welcomeSocket.accept(); ByteBuffer bf = ByteBuffer.allocate(bufferSize); BufferedInputStream inFromClient = new BufferedInputStream(connectionSocket.getInputStream()); while (true) { int b = inFromClient.read(); if (b == -1) { break; } bf.put( (byte) b); } connectionSocket.close(); } 

int count = SocketChannel.read(ByteBuffer). 如果您没有使用SocketChannels ,不确定为什么添加’socketchannel’标签,但这是如何做到的。

  ServerSocket welcomeSocket = new ServerSocket(Integer.parseInt(ibmPort)); while (true) { Socket connectionSocket = welcomeSocket.accept(); InputStream stream = connectionSocket.getInputStream(); byte[] data = new byte[1024]; int count = stream.read(data); ByteBuffer bb = ByteBuffer.allocate(data.length); bb.put(data); bb.flip(); }