C# 发送一个字符串,Java 通过套接字接收到错误的字符串
本文关键字:字符串 套接字 错误 Java 一个 | 更新日期: 2023-09-27 18:30:24
通过套接字发送和接收字符串时遇到问题。我的应用程序包括一个 c# 客户端和 java 服务器。C# 将发送一个字符串:
C# 代码:
this.WriteByteArray(Encoding.Unicode.GetBytes(variable))
this.WriteByteArray(Encoding.Unicode.GetBytes(value.ToString()));
reader.ReadBoolean();
private void WriteByteArray(byte[] buffer)
{
writer.Write(buffer.Length);
if (buffer.Length > 0)
{
writer.Write(buffer);
}
}
和 Java 接收:
int lenght=readIntFromDotNet(reader);
if(lenght>0)
{
byte[] buffer = new byte[lenght];
reader.read(buffer, 0, lenght);
return new String(buffer);
}
问题:收到的字符串错误。
示例:C# 发送"变量",Java 接收"V a r i a b l e"
我的代码出了什么问题?
已解决:我使用了"UTF-16LE"
return new String(buffer,"UTF-16LE");
也许这会为你解决问题
this.WriteByteArray(variable)
reader.ReadBoolean();
void WriteByteArray(String message)
{
byte[] buffer = Encoding.UTF8.GetBytes(message);
AsyncCallback ac = new AsyncCallback(SendStreamMsg);
tcpClient.GetStream().BeginWrite(buffer, 0, buffer.Length, ac, null);
}
在爪哇方面
Charset utf8 = Charset.forName("UTF-8");
bufferReader = new BufferedReader(new InputStreamReader(sockServer.getInputStream(),utf8));
String message = br.readLine();