gpt4 book ai didi

java - Java 中的套接字和流

转载 作者:行者123 更新时间:2023-12-02 02:25:43 26 4
gpt4 key购买 nike

我已经构建了一个客户端-服务器应用程序,两者通过套接字和流进行通信。我的服务器创建这些流:

this.out = new DataOutputStream(sock.getOutputStream());
this.in = new DataInputStream(sock.getInputStream());
this.bufread = new BufferedReader(newInputStreamReader(sock.getInputStream()));

然后像这样从InputStream中读取:

type = this.in.readByte();
String name = this.bufread.readLine();

最后客户端像这样写入OutputStream:

DataOutputStream out = new DataOutputStream(MyClient.getOutputStream());
out.writeByte(17);
out.writeBytes("value\n");

我正在从客户端发送字节,而服务器正在读取字节。如果我从客户端发送字符、整数或其他任何内容,它仍然会从服务器读取为字节吗?具体使用的函数是否保证读取的数据类型?

最佳答案

您不能将相同的InputStream 包装在两个不同的对象(DataInputStream 和InputStreamReader)中。他们互不了解,会干扰对方的运作。

将套接字的输入流包装在一个对象中。由于您需要读取原始字节,因此 DataInputStream 最有意义。

正如您可能已经看到的,您不能使用 readLine method of DataInputStream ,因为它已被弃用。 不要尝试忽略该弃用并无论如何使用它;它被弃用是有原因的,即因为它不能正确处理字符。

理想情况下,您应该使用 readUTF方法,但您必须确保服务器使用 DataOutputStream.writeUTF 发送字符数据。为此。

关于java - Java 中的套接字和流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47802025/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com