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

本文关键字:对象 使用 TCP BinaryFormatter 客户端 java 服务器 之间 | 更新日期: 2023-09-27 18:16:58

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

客户端是用Java写的,服务器端是用c#写的

我想在服务器(c#)中做什么,获得所有字节并将其转换为对象,因为我在对象类型中从客户端发送所有对象。然后我想转换为文件或字符串

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

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

: -

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;
            }
        }

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

二进制格式化器在二进制流上放置一个表示。net类型的头文件。你不能用它向非。net客户端发送'object'含义。

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