Я пытаюсь разработать клиент-серверное приложение, которое может передавать файлы и строки с клиента на сервер. Я новичок в 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;
}
}
BinaryFormatter
для десериализации объекта, который был сериализован с помощью Java. См. stackoverflow.com/questions/17801967/ - person vesan   schedule 08.08.2014BinaryFormatter
предназначен только для сценариев .NET. Почему бы не использовать SOAP между ними, поскольку его поддерживают обе платформы? - person John Saunders   schedule 08.08.2014