Когда я отправляю, например, «1234», сервер, который является C++ с использованием библиотеки SFML, читает «1234╠╠╠╠╤lσ╝╝√ = ♦ ↑ ע σ». При отправке из C++ SFML-клиники на сервер все в порядке. Исходный клиент написан в Onj-c с помощью библиотеки Async Socket. WTF? (Все TCP)Ошибка чтения сокетов - добавляет некоторые проводные символы в сообщение
ответ
Похоже, сервер полагает, что данные, которые он получает, заканчиваются на нуль, но один из клиентов просто отправляет «1234» вместо «1234 \ 0». Таким образом, странные персонажи, которые вы видите, могут быть в том, что мусор оказался в той части памяти сервера.
Вы можете использовать такой инструмент, как Wireshark, чтобы точно видеть, что происходит по кабелю и как оно отличается между двумя клиентами.
Спасибо за это! Я буду использовать это. –
Я не уверен, что это вам поможет, но я предлагаю отправить что-то вроде этого «1234 \ 0».
Вы правы. Забудь об этом. –
Наивная реализация в SFML действительно предполагает поле с нулевым завершением - и покажет вам свой необработанный буфер. Который действительно не прекращается. Либо завершите отправку строки с помощью \ 0, либо отправите что-то вроде 12345 - и измените печать, чтобы положить \ 0 в [len] - или аналогично.
Получить строку из вашей библиотеки, вместе с длиной данных и добавить \ 0 на [Len]
Вы должны опубликовать код. Без этого мы не сможем помочь. –
Итак, ваш вопрос "WTF?"? И ваша проблема «подключена»? И вы говорите, что используете «Onj-c»? Поместите исправленный код и исправьте орфографию. – AndiDog