在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;
}
}
二进制格式化器在二进制流上放置一个表示。net类型的头文件。你不能用它向非。net客户端发送'object'含义。
相反,您将不得不序列化为XML或Json,并在客户端提供本地模型和反序列化。