|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
27.05.2013, 22:47 | #1 |
Регистрация: 23.01.2011
Сообщений: 3
|
Передача строк через ClientSocket ServerSocket
Доброго времени суток. Имеем две программы, одна является клиентом, вторая сервером, передаем строки считанные из разных фалов на программу сервер через сокеты. Проблема в следующем: строки считываются нормально, но при передаче иногда возникают проблемы: информация передается не полностью и/или не передается вообще и/или строки переданные по порядку могут сращиваться в одну. Отследить закономерность, при каких условиях это происходит не получается
Отправка с клиента Код:
Код:
Последний раз редактировалось stranger1234; 27.05.2013 в 22:54. |
28.05.2013, 08:58 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
Это нормальное поведение. TCP - это поток байтов нет гарантий, что байты будут получаться теми же группами, какими были отправлены.
Либо посылайте сначала размер строки, потом строку, либо вставляйте сепаратор между строками (например те же CRLF) и потом разбивайте на строчки. |
28.05.2013, 12:09 | #3 |
Пользователь
Регистрация: 23.08.2011
Сообщений: 55
|
Все дело в том, что строки определяются до нулевого символа, его надо насильно записывать после строк. А сокеты «обрубают» его. Хорошим решением является, как уже сказал waleri передача размера строки, а ещё лучше передать не строку, а массив с размером. Я уже не помню деталей, но с размером не будет «склеивания» и «неверного» завершения.
"Пока бабка не смоет косметику, русский мужик не перекрестится" (C) Кто-то
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ClientSocket, ServerSocket - проблема с передачей сообщения | Karateka | Работа с сетью в Delphi | 6 | 27.05.2013 10:24 |
передача сообщений через serversocket и clientsocket | virtuhay266 | Помощь студентам | 1 | 14.12.2011 22:54 |
Передача данных StringGrid через ServerSocket - ClientSocket | Polotenchik | Общие вопросы Delphi | 4 | 18.03.2010 01:42 |
Реализация бана через ServerSocket и ClientSocket | Sensizu | Общие вопросы Delphi | 0 | 04.01.2010 13:42 |
[TcpClient, TcpServer] или [ServerSocket, ClientSocket] работа через прокси | DOLBY | Работа с сетью в Delphi | 2 | 17.09.2009 05:46 |