C # передача объектов TCPListener - PullRequest
       43

C # передача объектов TCPListener

0 голосов
/ 12 октября 2010

Я новичок в сетевом программировании на C #.Я обнаружил, что класс TCPListener очень полезен для отправки текста между компьютерами, но мне было интересно, можно ли напрямую отправлять объекты (при условии, что и клиент, и сервер имеют определение класса) между компьютерами без необходимости сначала преобразовывать их в строку, а затем делатьобъект с этими данными.

Спасибо,

PM

Ответы [ 3 ]

2 голосов
/ 12 октября 2010

Одним из решений вашей проблемы является использование WCF и пометить ваши объекты как Serializable, с привязкой TCP.Но это совсем другой подход, чем у «низкоуровневого» решения на основе сокетов, которое у вас уже есть.Тем не менее, я бы дал WCF попробовать.

1 голос
/ 12 октября 2010

Вы не можете отправлять «объекты» напрямую через сеть.Вы должны конвертировать их в разбираемую двоичную или текстовую форму.Для последнего лучше всего подходит xml.Для этого вы можете использовать BinaryFormatter или XmlSerializer.

Если вы действительно хотите отправлять объекты .NET, поскольку вы обслуживаете только клиентов .net, tcp может быть низкого уровня для ваших нужд.В этом случае обратите внимание на .net remoting , который позволяет напрямую обмениваться объектами между сервером и клиентом.

0 голосов
/ 12 октября 2010

Пока определения классов одинаковы с обеих сторон, вы можете использовать двоичную сериализацию для сериализации любого объекта в поток:

  BinaryFormatter bFormatter = new BinaryFormatter();
  bFormatter.Serialize(stream, objectToSerialize);
  stream.Close();

Вам лучше использовать WCF, как отмечено выше, однако,так как это сломается, если сборки версированы с любой стороны провода.

...