[英]Read and write to TCP socket in Java
我正在接受客户端的 java 中创建一个简单的 TCP 服务器。 每个连接到服务器的客户端都会发送一条消息,并根据该消息发送一个答案。
为了接受客户,我正在使用ServerSocket
class。 为了读取客户端的消息并写信给他,我只能在Socket
、 DataOutputStream
和DataInputStream
类以及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_8
将String
编码为byte[]
数组,然后使用DataOutputStream.writeInt()
发送数组的长度,最后使用DataOutputStream.write(byte[])
。
然后接收者可以使用DataInputStream.readInt()
读取数组长度,然后分配一个byte[]
数组并使用DataInputStream.readFully()
读取它,最后使用String
构造函数使用StandardCharsets.UTF_8
解码字节。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.