将字符串从Java发送到.NET BinaryReader.ReadString

时间:2014-09-25 22:29:37

标签: java

我想从我的Java TCP客户端向我的Visual Basic服务器发送TCPMessage。

服务器使用BinaryReader.ReadString()函数。

http://msdn.microsoft.com/en-US/library/system.io.binaryreader.readstring.aspx

ReadString函数需要一个7比特长的字符串大小的前缀。

目前这是我的代码,但服务器无法识别该消息。

public void sendMessage(String message) { 
     if (out != null &&  !out.checkError()) {
         out.print(message.length());
         out.println(message);
         out.flush(); 
     } 
 }

我无法更改整个服务器架构,以使其识别字符串,例如来自ReadLine。

希望有人可以提供帮助,现在尝试几个小时。

1 个答案:

答案 0 :(得分:0)

您的out可能是PrintWriter,可将数据转换为文字。例如,out.print()将值的长度写为字符串,而ReadString将字符串的长度读取为二进制数据。对于初学者,您需要将out更改为OutputStream(写入二进制数据)而不是PrintWriter。另一件事是你需要确保Java编写的字符串的字符编码与BinaryReader使用的编码匹配(默认为UTF-8)。另请注意,ReadString期望字符串的长度以Write7BitEncodedInt method中描述的特殊格式进行编码。

最后,ReadString不希望换行符出现在字符串的末尾(println隐式添加换行符。)