![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
breeve |
![]()
Сообщение
#1
|
Участник ![]() ![]() Группа: Участник Сообщений: 188 Регистрация: 26.12.2009 Пользователь №: 1336 Спасибо сказали: 9 раз(а) Репутация: ![]() ![]() ![]() |
Имею следующий код:
Код клиента: client
server
По идее ведь я 3 раза записал в клиенте. Соответственно на сервере должен 3 раза вызваться сигнал readyRead(). Но почему-то это не всегда так. Если name + message + end размером около 30 байт, то все это на сервере приходит как одно сообщение и сигнал срабатывает только один раз. Объясните пожалуйста как сделать так чтобы последовательно обрабатывать: клиент записал первую порцию, и пока сервер не обработает, он не может записать следующее. |
|
|
![]() |
ssoft |
![]()
Сообщение
#2
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 130 Регистрация: 17.2.2010 Из: Москва Пользователь №: 1470 Спасибо сказали: 30 раз(а) Репутация: ![]() ![]() ![]() |
По идее ведь я 3 раза записал в клиенте. Соответственно на сервере должен 3 раза вызваться сигнал readyRead(). Нет, так не работает. Количество записей в клиенте не гарантирует такое же количество на сервере. Записи могут прийти как разделенные на несколько частей, так и слитые вместе. А может быть и то и другое одновременно. Здесь на форуме есть темы по сборке сообщений из сокета, например тут Объясните пожалуйста как сделать так чтобы последовательно обрабатывать: клиент записал первую порцию, и пока сервер не обработает, он не может записать следующее. Для этого необходимо разработать протокол взаимодействия клиента и сервера. Сервер должен оповещать клиента о том, что он сообщение обработал. |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 18.2.2025, 9:26 |