Проблема чтения проводных сокетов - добавляет в сообщение несколько проводных символов - PullRequest
0 голосов
/ 20 ноября 2010

Когда я отправляю, например, «1234», сервер, который является C ++ с использованием библиотеки SFML, читает «1234╠╠╠╠╤lσ╝╝√ = ♦ ↑ ע σ». При отправке из C ++ SFML клинета на сервер все ок. Оригинальный клиент, написанный на Onj-c с библиотекой Async Socket. WTF? (Все по ПТС)

Ответы [ 4 ]

2 голосов
/ 20 ноября 2010

Я не уверен, что это поможет вам, но я предлагаю отправить что-то вроде этого "1234 \ 0".

0 голосов
/ 21 ноября 2010

Получите строку из вашей библиотеки вместе с длиной данных и добавьте \ 0 в [len]

0 голосов
/ 20 ноября 2010

Наивная реализация в SFML действительно принимает поле с нулевым символом в конце - и покажет вам его необработанный буфер.Который действительно не заканчивается.Либо прервите строку отправки с помощью \ 0, либо, альтернативно, отправьте что-то вроде 12345 - и замените печать на \ 0 в [len] - или аналогичным образом.

0 голосов
/ 20 ноября 2010

Похоже, сервер полагает, что данные, которые он получает, терминируются, но один из клиентов просто отправляет «1234» вместо «1234 \ 0». Так что странные символы, которые вы видите, могут быть тем мусором, который попал в эту часть памяти сервера.

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

...