Отправка сериализованного объекта XML через сокет .net - PullRequest
0 голосов
/ 25 февраля 2011

Я отправляю сериализованный объект xml клиенту с сервера, используя сокет TCP. У меня возникли проблемы при преобразовании байтового массива в строку XML. Я не знаю, если я не использую правильный декодер, но когда байтовый массив получен на стороне клиента, строка xml имеет префикс «?». Таким образом, первая строка моей строки xml становится чем-то вроде ?<?xml version="1.0" encoding="utf-8"?>, который я не могу десериализовать, поскольку он больше не является действительным xml.

Я пробовал кодирование UTF-8 и Ascii.

Любой вклад будет высоко оценен.

спасибо,

Бибек Давади

Ответы [ 2 ]

1 голос
/ 25 февраля 2011

Если вы получили? перед строкой это означает, что вы сохранили его как UTF8. Скорее всего, вы сериализовали в UTF (UTF8?), Но в какой-то момент вы конвертировали его в ASCII. Я думаю, после получения.

Избегайте преобразования его в string в любом месте и вместо этого работайте непосредственно на byte-array, и все должно быть в порядке.

Фон:
Статья в Википедии на UTF8 .
ASCII - это только 7-битные байты, поэтому при преобразовании в ASCII заменяется любой байт в диапазоне 128-255. RFC3629 : см. Раздел 6: спецификация

0 голосов
/ 25 февраля 2011

ASCII заменит нераспознанные байты на ?. Возможно, это то, что происходит.

Трудно сказать по вашему вопросу, где может быть проблема; размещение вашего кода отправки и получения поможет. У меня также есть несколько советов в моем блоге для отправки XML по TCP / IP.

...