[英]Send Object (Class) from C# Client to Java Server over TCP
我正在尝试通过TCP连接将对象从C#发送到Java,但是它不起作用。 Java告诉我有错误,我不知道为什么
java.io.StreamCorruptedException: invalid stream header: 3C3F786D
at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
at java.io.ObjectInputStream.<init>(Unknown Source)
at ClientThread.run(ClientThread.java:34)
at java.lang.Thread.run(Unknown Source)
我已经用谷歌搜索了,但是没有找到我的问题的确切答案。 我已经使用xml序列化器序列化了我的c#类。 我在互联网上找到了代码。
这是C#代码
var cmd = new Command();
cmd.setType(5);
var xmlSerializer = new XmlSerializer(typeof(Command));
using (var memoryStream = new MemoryStream())
{
xmlSerializer.Serialize(memoryStream, cmd);
}
String sendMsg = message + ";";
try
{
if (tcp_stream.CanWrite)
{
xmlSerializer.Serialize(tcp_stream, cmd);
}
tcp_stream.Flush();
}
catch (Exception exception)
{
MessageBox.Show("Error..... " + exception);
}
Java服务器代码是
try {
ObjectOutputStream sOutput = new ObjectOutputStream(socket.getOutputStream());
ObjectInputStream sInput = new ObjectInputStream(
socket.getInputStream());
this.message = (Message) sInput.readObject();
System.out.println("MessageType: " + this.message.getType());
}
catch (IOException e) {
System.out.println("Can not get message. " + e.getMessage());
e.printStackTrace();
break;
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
感谢您的任何答案。 任何帮助表示赞赏。
Java二进制序列化和.NET XML序列化彼此不兼容。 Java二进制序列化与其自身兼容,仅此而已。 您需要选择一种可以同时被序列化和反序列化的通用格式。 一些示例可能包括某种形式的XML或JSON或BSON,Google Protobuf等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.