繁体   English   中英

读写Java中的TCP socket

[英]Read and write to TCP socket in Java

我正在接受客户端的 java 中创建一个简单的 TCP 服务器。 每个连接到服务器的客户端都会发送一条消息,并根据该消息发送一个答案。

为了接受客户,我正在使用ServerSocket class。 为了读取客户端的消息并写信给他,我只能在SocketDataOutputStreamDataInputStream类以及StandardCharsets.UTF_8中使用。 此外,服务器获取和发送的每条消息都必须采用 UTF-8 编码。

但是,我不确定如何使用这些类以 UTF-8 编码读写消息。 消息的大小是无限的。 我试图阅读有关DataInputStream class 的read function 的信息,但我不明白如何使用它(如果这确实是我需要使用的 function)。

DataOutputStream有一个writeUTF()方法, DataInputStream有一个readUTF()方法。 请注意,这些方法处理修改后的 UTF-8而不是标准的 UTF-8,并且它们将 UTF-8 数据限制为最大 65535 字节。

最好自己手动处理 UTF-8。

发送方可以使用String.getBytes()使用StandardCharsets.UTF_8String编码为byte[]数组,然后使用DataOutputStream.writeInt()发送数组的长度,最后使用DataOutputStream.write(byte[])

然后接收者可以使用DataInputStream.readInt()读取数组长度,然后分配一个byte[]数组并使用DataInputStream.readFully()读取它,最后使用String构造函数使用StandardCharsets.UTF_8解码字节。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM