gpt4 book ai didi

java - 为什么 BinaryReader 卡在 ReadString() 上而不卡在 Read() 上?

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

如果Socket连接成功,我的Java服务器会执行以下操作:

out = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()));
out.write("HELLO");
out.newLine();
out.flush();

这就是我的 C# 客户端所做的事情:

TcpClient tcpClient         = new TcpClient("localhost", port);
tcpClient.ReceiveTimeout = 10000;
NetworkStream networkStream = tcpClient.GetStream();
BinaryReader reader = new BinaryReader(networkStream);
reader.ReadString(); // <--- Hangs
tcpClient.Close();

它将卡在ReadString()上并最终超时。如果你把它改成

reader.Read(); // <--- Returns 72

返回72,我认为它对应于H。显然 Java 服务器确实正在发送消息 - 为什么 ReadString() 挂起?

最佳答案

您写入的格式与随后读取的格式不匹配。 BinaryReader.ReadString 的文档说:

Reads a string from the current stream. The string is prefixed with the length, encoded as an integer seven bits at a time.

这与您所写的内容非常不同。

我的猜测是,ReadString 获得了一个大得离谱的“长度”,并且正在尝试读取那么多字节。当然,它们不会被发送。

关于java - 为什么 BinaryReader 卡在 ReadString() 上而不卡在 Read() 上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42733013/

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