Я новичок в запасах на C#, я хочу отправить объект на C#. Использовали BinaryWriter для передачи данных (отлично работает для строки), но это, кажется, не имеет метод, какОтправить объекты через Сокеты
writer.Writer(new SerliaizedObject());
Как мы достигаем этого с помощью BinaryReader/BinaryWriter
UPDATE: Я использовал следующие функции для преобразования с помощью объекта байт и отправить его по клиенту
public static byte[] SerializeToBytes<T>(T item)
{
var formatter = new BinaryFormatter();
using (var stream = new MemoryStream())
{
formatter.Serialize(stream, item);
stream.Seek(0, SeekOrigin.Begin);
return stream.ToArray();
}
}
public static object DeserializeFromBytes(byte[] bytes)
{
var formatter = new BinaryFormatter();
using (var stream = new MemoryStream(bytes))
{
return formatter.Deserialize(stream);
}
}
чтобы отправить данные используются:
formatter = new BinaryFormatter();
MessageBox.Show(SerializeToBytes<mydata>(new mydata()).Length+"");
writer.Write(SerializeToBytes<mydata>(new mydata()));
ChatBox.AppendText("Client Says :" + UserMessage.Text + "\r\n");
И читать данные, которые я использовал:
while (true)
{
byte[] bytes = reader.ReadBytes(120);
mydata temp = DeserializeFromBytes(bytes) as mydata;
ChatBox.AppendText("Server Says " + temp + "\r\n");
}
Но читатель, кажется, не работает, есть идеи?
сериализуйте объект в массив байтов и напишите это? –
Вам не нужно искать начало потока перед преобразованием в массив. – dasblinkenlight