【问题标题】:StreamWriter.Flush(); won't flushStreamWriter.Flush();不会冲洗
【发布时间】:2012-06-19 11:00:24
【问题描述】:

我正在尝试使用 C# 将 Unity 游戏链接到 Java 服务器

当 Java 服务器启动时,我可以发送数据的唯一方法是关闭 StreamWriter (OUT.Close();),它实际上也关闭了连接。所以我只能发送一次数据。或者,每次我想发送消息时,我都必须重新连接到服务器。

当我只使用 Flush() 时,数据不会发送到服务器。 代码:

NetworkStream STREAM = connection.GetStream();
StreamWriter OUT = new StreamWriter(STREAM);
OUT.Write(text);
OUT.Flush()

这是我的阅读代码:

BufferedReader input = new BufferedReader(new InputStreamReader(client.getInputStream()));
String inputstring = input.readLine(); 

【问题讨论】:

  • 我怀疑错误出在您的阅读代码中,而不是您的编写代码中。一个疯狂的猜测是,您不会将正在读取的流视为流,而是期望数据包。
  • 这是我的阅读代码 BufferedReader input = new BufferedReader(new InputStreamReader(client.getInputStream()));字符串输入字符串 = input.readLine();

标签: c# java unity3d flush


【解决方案1】:

您使用Write 编写没有行分隔符的文本并使用ReadLine 读取,所以这不匹配。在没有行分隔符的情况下,ReadLine 会读取到流的末尾,这就解释了为什么需要关闭流。将Write 替换为WriteLine

【讨论】:

  • 谢谢你!!!!!! :D!这真的让我很沮丧,因为无论我如何处理这个问题,它似乎永远不会消失。我终于可以继续前进了! :D
猜你喜欢
  • 2018-06-24
  • 1970-01-01
  • 2012-10-14
  • 2016-05-16
  • 2013-03-04
  • 2011-11-10
  • 1970-01-01
  • 1970-01-01
  • 2012-06-17
相关资源
最近更新 更多