[英]How to get data from TCP socket into a 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();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.