在java客户端和C#服务器之间发送对象(使用TCP和BinaryFormatter)

在java客户端和C#服务器之间发送对象(使用TCP和BinaryFormatter),c#,tcp,binaryformatter,C#,Tcp,Binaryformatter,我正在尝试开发客户端-服务器应用程序,它可以将文件和字符串从客户端传输到服务器。我不熟悉TCP、套接字和服务器事务 客户端用Java编写,服务器端用C编写# 我在服务器(C#)中尝试做的是,获取所有字节并将其转换为一个对象,因为我以对象类型从客户端发送所有对象。然后我想转换成文件或字符串 但在这行代码中,我得到了一个错误 Object myObject = (Object)binForm.Deserialize(memStream); 服务器端:- 二进制格式化程序在表示.NET类型的二进制流

我正在尝试开发客户端-服务器应用程序,它可以将文件和字符串从客户端传输到服务器。我不熟悉TCP、套接字和服务器事务

客户端用Java编写,服务器端用C编写#

我在服务器(C#)中尝试做的是,获取所有字节并将其转换为一个对象,因为我以对象类型从客户端发送所有对象。然后我想转换成文件或字符串

但在这行代码中,我得到了一个错误

Object myObject = (Object)binForm.Deserialize(memStream);
服务器端:-


二进制格式化程序在表示.NET类型的二进制流上放置一个标头。您不能使用它向非.net客户端发送“object”含义


相反,您必须序列化为XML或Json,并在客户端提供本地模型和反序列化。

您看到的错误是什么?显示catch的内部异常?异常是“解析完成前遇到的流结束”我以前从未尝试过这一点,但是我非常确定,您不能使用.NET
BinaryFormatter
来反序列化使用Java序列化的对象。请参阅添加到可序列化对象的问题。
private void ClientHandler(object client)
    {
        int bytesRead = 0;
        byte[] buffer = new byte[32];

        tcpClient = (TcpClient)client;
        clientStream = tcpClient.GetStream();

        Console.WriteLine("Client Handler Started!");

        while (true)
        {
            bytesRead = 0;

            try
            {
                Console.WriteLine("Server waiting for commands\n");

                MemoryStream memStream = new MemoryStream();
                BinaryFormatter binForm = new BinaryFormatter();


                while ((bytesRead = tcpClient.Client.Receive(buffer)) > 0)
                {

                    Console.WriteLine("bytes received :- " + bytesRead);

                    memStream.Write(buffer, 0, bytesRead);                        

                }
                try
                {

                    memStream.Position = 0;

                    Object myObject = (Object)binForm.Deserialize(memStream);
                    // After this cast it to String or File 

                }
                catch(Exception exp)
                {                       
                    Console.WriteLine(exp.ToString());
                }

            }
            catch
            {
                //a socket error has occured
                Console.WriteLine("a socket error has occured!!!");
                break;
            }
        }