|
1 / 1 / 0
Регистрация: 06.10.2016
Сообщений: 26
|
||||||
TCP обмен java->vb появляются символы �15.08.2017, 16:23. Показов 1421. Ответов 11
Метки нет (Все метки)
сервер - консольное приложение написан на vb
клиент - планшет на андроид написан на java (кодировка UTF-8) 1. открываю файл .csv и перевожу его в стринг
3. сохраняю файл на клиенте. 4. отправляю сохраненный файл на сервер 5. принимаю файл на сервере и перевожу в стринг через UTF-8 итого в полученном стринге появляются символы �. каждый раз в разных местах. подскажите пожалуйста как решить данную проблему.
0
|
||||||
| 15.08.2017, 16:23 | |
|
Ответы с готовыми решениями:
11
Символы � при декодировании utf8 кириллицы Что за символы "�"?
|
|
Администратор
|
|
| 15.08.2017, 16:45 | |
|
Николай Пряхин, наверное что-то не так с кодировкой или процессом получения текста. Нужно видеть код с обоих сторон чтобы точнее ответить.
1
|
|
|
1 / 1 / 0
Регистрация: 06.10.2016
Сообщений: 26
|
||||||
| 15.08.2017, 17:07 [ТС] | ||||||
|
сервер
1
|
||||||
|
1 / 1 / 0
Регистрация: 06.10.2016
Сообщений: 26
|
|||||||||||
| 15.08.2017, 17:07 [ТС] | |||||||||||
|
клиент
MainActivity
0
|
|||||||||||
|
COM‐пропагандист
|
|
| 15.08.2017, 21:19 | |
|
Советы.
1. Вместо Socket используйте TcpListener, запись и чтение данных через StreamReader в кодировке на базе NetworkStream, полученный из TcpClient. 2. Для объединения путей в файлах и каталогах есть метод Path.Combine.
1
|
|
|
1 / 1 / 0
Регистрация: 06.10.2016
Сообщений: 26
|
|
| 16.08.2017, 11:32 [ТС] | |
|
я правильно понимаю, что ошибка скорее всего на сервере?
и если я выполню совет №1, то ее не будет? если не сложно, прошу выложить пример рабочего кода на прием сообщений на сервере или хотя бы ссылку.
0
|
|
|
1 / 1 / 0
Регистрация: 06.10.2016
Сообщений: 26
|
||||||
| 16.08.2017, 11:56 [ТС] | ||||||
|
опробовал следующий код
заметил, что "?" появляется в начале и в конце блоков передаваемого текста
0
|
||||||
|
1 / 1 / 0
Регистрация: 06.10.2016
Сообщений: 26
|
||||||
| 16.08.2017, 14:10 [ТС] | ||||||
|
есть следующие подозрения
файл приходит на сервер частями преобразуется в стринг тоже частями на этом этапе похоже и получаются разрывы байтов, которые невозможно преобразовать в стринг подскажите пожалуйста как мне объединить части в единое целое, а потом преобразовать их в стринг. думаю проблема на этом закроется. Добавлено через 1 час 12 минут сделал так. все равно бьет на части и появляются "?" помогите пожалуйста. что делать?
0
|
||||||
|
COM‐пропагандист
|
||||||
| 16.08.2017, 22:10 | ||||||
Сообщение было отмечено Николай Пряхин как решение
Решение
Нужно понять как приходят данные. Являются ли они только текстовыми и в кодировке UTF-8.
Если так, то должна быть определённая последовательность символов, означающая конец строки. Например, нулевой байт. Или как в IRC и HTTP — символы с кодами 13 и 10 (CrLf). Если конец строки обозначается через CrLf, то всё намного упрощается. На базе NetworkStream создаётся StreamReader и данные читаются методом ReadLine.
Если же данные не являются только текстовыми или разделитель данных не CrLf, то делаем так. 1. Создаём накопительный буфер, например, ArrayList(Of Byte). 2. Ищем в этом буфере последовательность байтов, означающих разделитель. Если не найдено, то получаем данные из сети и складируем их в накопительный буфер, например, через AddRange(). 3. Повторяем шаг №2 до тех пор, пока символ разделитель строк не появится в накопительном буфере. 4. Получаем строку от начала накопительного буфера до этого символа. 5. Удаляем из накопительного буфера байты до разделителя и сам разделитель. 6. Оставшиеся байты в накопительном буфере сдвигаем в начало буфера. Также можно увеличить размер буфера, куда NetworkStream записывает байты, чтобы получить все данные за один раз. Например, до одного мегабайта.
2
|
||||||
|
1 / 1 / 0
Регистрация: 06.10.2016
Сообщений: 26
|
||||||
| 18.08.2017, 10:15 [ТС] | ||||||
|
1.сообщение будет содержать несколько файлов .csv внутри текст в формате UTF-8
2.внутри файла есть разделители строк "Chr(10)" 3.конец файла обозначается через "<EndFile>" 4.конец сообщения всегда содержит "<EOF>" Добавлено через 8 часов 8 минут Проблему решил через StreamReader. Замабувараев, огромное спасибо. Но возникла другая проблема мне нужно асинхронное соединение. Где копать приблизительно понимаю, но может у кого есть готовое решение или ссылка на него. Заранее благодарен. Выкладываю то, что получилось.
всем спасибо. тема закрыта. просмотрел. этот вариант и является асинхронным )).
0
|
||||||
|
COM‐пропагандист
|
|
| 18.08.2017, 21:06 | |
|
Никакой он не асинхронный. Метод StreamReader.ReadLine() не возвращает значения до до тех пор, пока не будут получены байты CrLf из сети.
Если необходимо не останавливать текущий поток, то рекомендую запустить ReadLine в отдельном потоке (будет работать везде), либо использовать ReadLineAsync (будет работать только на дотнете 4,5 и выше).
1
|
|
|
1 / 1 / 0
Регистрация: 06.10.2016
Сообщений: 26
|
||||||
| 21.08.2017, 10:00 [ТС] | ||||||
|
Замабувараев, я имел ввиду, что это предусмотрено в коде. у меня вот этот вариант без проблем работает. как только клиент отсоединяется, сервак ждет следующего соединения.
я наверно неправильно написал. асинхронный метод это когда одновременно информация идет в обе стороны? Если так, то извиняюсь. Я имел ввиду, что после завершения соединения сервер ждет следующего подключения.
0
|
||||||
| 21.08.2017, 10:00 | |
|
Помогаю со студенческими работами здесь
12
Сгруппированный обмен сообщениями по TCP MODBUS-TCP обмен данными Обмен Xml пакетами по TCP Tcp Сервер - Клиент обмен данными Обмен данными клиент-сервер TCP Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|