Отправка информации через сокет в C # - PullRequest
3 голосов
/ 05 мая 2010

Я построил две программы на C # и посылаю простые строки через сокеты. На данный момент это нормально, но в ближайшем будущем мне нужно будет посылать более сложные предметы, такие как объекты в сокеты и в конечном итоге файлы.

Какие шаги я бы предпринял, чтобы сделать это? Какую цель используют буферы для сокетов / потоков? Извиняюсь, если я немного расплывчат.

Ответы [ 5 ]

1 голос
/ 05 мая 2010

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

Кроме того, ознакомьтесь с рекомендациями, опубликованными здесь: Рекомендации по сериализации MSDN

Если вы собираетесь отправлять объекты, вы можете посмотреть либо опции .Net Remoting, либо службы WCF, если это применимо. Использование собственных обработчиков сокетов, а затем их использование для сложных операций требует много времени и усилий, особенно если вы раньше этого не делали.

1 голос
/ 05 мая 2010

Есть много вариантов, но в основном вы хотите сериализовать данные в формат, который будет проходить через сокет.

Стоит посмотреть здесь на сериализацию XML.

0 голосов
/ 05 мая 2010

Вам необходимо сериализовать объекты. Отметьте это атрибутом [Serializable] и используйте некоторые сериализаторы. Пример можно найти здесь .

0 голосов
/ 05 мая 2010

Во-первых, в любой ситуации, связанной с передачей, необходимо учитывать, что все, что вы отправляете, должно иметь возможность сериализации и десериализации, чтобы оно могло проходить через канал связи. Затем вы должны учесть, что связь имеет задержку (не мгновенную), а затем тот факт, что она может потерпеть неудачу.

После этого вы рассматриваете протоколы и технологии, позволяющие учесть вышеизложенное.

0 голосов
/ 05 мая 2010

Один из способов справиться с этим - сериализовать ваш объект в XML, отправить через сокет и затем десериализовать его. Я делал это раньше. Тем не менее, я (будучи новичком в .NET) только что узнал о JavaScriptSerializer , который, как мне кажется, делает этот процесс намного проще для вас.

...