【发布时间】:2014-12-18 17:15:46
【问题描述】:
我正在创建一个易于使用的带有可扩展协议的服务器-客户端模型,其中服务器使用 Java,客户端可以是 Java、C# 等。
我遇到了这个问题:Java数据流写字符串with a short designating the length,后面跟着数据。
C# 让我指定我想要的编码,but it only reads one byte for the length。 (实际上,它说“一次 7 位”......这很奇怪。这可能是我的问题的一部分?)
这是我的设置:一旦连接,服务器就会向客户端发送一个字符串。是一个短字符串,所以第一个字节为0,第二个字节为9;字符串长 9 个字节。
//...
_socket.Connect(host, port);
var stream = new NetworkStream(_socket);
_in = new BinaryReader(stream, Encoding.UTF8);
Console.WriteLine(_in.ReadString()); //outputs nothing
在读取字符串之前读取单个字节当然会输出预期的字符串。但是,如何设置我的流阅读器以使用两个字节作为长度而不是一个字节来读取字符串?我是否需要继承 BinaryReader 并覆盖 ReadString()?
【问题讨论】:
标签: java c# string sockets utf-8