Здравствуйте, гость ( Вход | Регистрация )
Strikevld | Дата 23.12.2011, 12:35 |
Записи могут прийти как разделенные на несколько частей, так и слитые вместе. А может быть и то и другое одновременно. Можно ведь переопределить класс, и сделать слияние кусков полученных данных в один кусок! Я именно так и делал! Добавил сигнал messageIntered и всё! Правда для полной уверенности пришлось вставить сигнатуры начала и конца сообщения для подтверждения доставки - а это + 8 байт (т.е. 4 - начало и 4 - конец) к каждому сообщению! |
|
ssoft | Дата 23.12.2011, 7:21 |
По идее ведь я 3 раза записал в клиенте. Соответственно на сервере должен 3 раза вызваться сигнал readyRead(). Нет, так не работает. Количество записей в клиенте не гарантирует такое же количество на сервере. Записи могут прийти как разделенные на несколько частей, так и слитые вместе. А может быть и то и другое одновременно. Здесь на форуме есть темы по сборке сообщений из сокета, например тут Объясните пожалуйста как сделать так чтобы последовательно обрабатывать: клиент записал первую порцию, и пока сервер не обработает, он не может записать следующее. Для этого необходимо разработать протокол взаимодействия клиента и сервера. Сервер должен оповещать клиента о том, что он сообщение обработал. |
|
breeve | Дата 22.12.2011, 18:22 |
Имею следующий код: Код клиента: client
server
По идее ведь я 3 раза записал в клиенте. Соответственно на сервере должен 3 раза вызваться сигнал readyRead(). Но почему-то это не всегда так. Если name + message + end размером около 30 байт, то все это на сервере приходит как одно сообщение и сигнал срабатывает только один раз. Объясните пожалуйста как сделать так чтобы последовательно обрабатывать: клиент записал первую порцию, и пока сервер не обработает, он не может записать следующее. |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 28.4.2024, 7:00 |