.Net клиент против Java Server с необработанными данными - PullRequest
0 голосов
/ 12 мая 2009

Я пишу клиент .Net / C # на сервер Java в Solaris.

Java-сервер записывает необработанные байтовые данные в формате Gziped, которые мне нужно извлечь, но у меня возникают проблемы с чтением данных с правильным размером буфера. Я читаю сообщение недетерминированным или неполным, и не могу прочитать второе сообщение в любом случае. Я читаю байты, используя класс NetworkStream со свойством DataAvailable.

Я предполагаю, что это может быть связано с небольшой / большой проблемой порядка байтов. Нужно ли использовать специальное преобразование для преобразования данных из больших в маленькие порядковые номера? Нужно ли читать нужные байты, используя заголовок gzip?

Раньше я использовал тот же сервер с несжатым протоколом и раньше не испытывал проблем с использованием StreamReader с функцией ReadLine, но этот протокол был основан исключительно на тексте.

Редактировать: К сожалению, у меня нет выбора, так как удаленный сервер и протокол предоставляется. Является ли конец частью формата GZip или мне нужно только соответственно преобразовать заголовок? Несжатые данные - это строки в кодировке UTF8 с разделителями строк в качестве разделителей.

1 Ответ

2 голосов
/ 13 мая 2009

Формат GZIP не сложен. Он доступен во всей красе в простом, доступном документе спецификации, IETF RFC 1952 .

Формат GZIP определяет битовый порядок для байтов. Это не настраивается с флагом для порядка байтов. Производитель потока GZIP отвечает за соответствие спецификации в этом отношении, а также потребитель потока GZIP.

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

Если вам не удалось передать поток GZIP, попробуйте передать тестовые данные - 16 байтов 0xFF, затем 16 байтов 0xAA и т. Д. И т. Д. Затем убедитесь, что это данные, поступающие на другой конец.

Извините, я не знаю, что вы подразумеваете под Я читаю сообщение недетерминированным или неполным или не могу прочитать второе сообщение в любом случае. Второе сообщение? Какое второе сообщение? Порядковый номер не должен влиять на объем данных, которые вы получаете.

Мне кажется, что вы не уверены, что успешно передаете данные. Я бы посоветовал вам проверить это перед тем, как приступить к решению проблем с порядком байтов и формата GZIP.

...