Срочно нужна помощь, QTcpServer |
Здравствуйте, гость ( Вход | Регистрация )
Срочно нужна помощь, QTcpServer |
Гость_Slon_* |
7.6.2010, 2:10
Сообщение
#1
|
Гости |
Нужна срочно помощь по написанию сервер-клиент приложения, нада чтоб с клиента передавался запрос (стринг) и от того что в стринге сервер отсылает ответ...
читаю на сервере при входящем соединении
дебаг пишет Size 1 65196 Size 2 65196 df 0 Size 3 65196 с клиента пишу :
где Server_cast_Thread:
дебаг видает размер 61453 block вроде правильно отравляется.. запись вызываю с tcpSocket SIGNAL(connected()); Пытался на сервере конект функции чтения сделать от сигнала readReady(); Не вызывается вообще ничего в результати, если я понял даные с клиента просто не доходят до сервера, так как при поступлении даных сразу появляеться сигнал readReady(); Подскажите как организовать отсилку запроса из клиента серверу... Куда копать... Заранее спасибо |
|
|
ViGOur |
7.6.2010, 18:49
Сообщение
#2
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Как я понимаю ты за основу взял: Fortune Server и Fortune Client.
Если глянуть в пример клиента, то как он готовится к получению данных, то waitForReadyRead ты не увидишь, так как данная функция используется в синхронном режиме работы с сокетами, а по умолчанию в Qt используется асинхронная модель работы с сокетами. Клиент в меcто этого подготавливается к получению данных связывая сигнал readyRead со слотом readFortune, в котором уже и принимает отправленные сервером данные.
|
|
|
Гость_Slon_* |
7.6.2010, 21:11
Сообщение
#3
|
Гости |
Я пытаюсь при установлении соединения сразу писать в поток к серверу, а клиент ждет от сервера даные как только чтото появляеться, вызываеться функция чтения , что не так?
|
|
|
ViGOur |
8.6.2010, 11:12
Сообщение
#4
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Судя по использованию функции waitForReadyRead не как только что-то появляется.
Используй сигналы и слоты для ожидания поступления новых данных... Просто ты скрещиваешь синхронную и асинхронные модели... Цитата bool QAbstractSocket::waitForReadyRead ( int msecs = 30000 ) [virtual]
This function blocks until data is available for reading and the readyRead() signal has been emitted. The function will timeout after msecs milliseconds; the default timeout is 30000 milliseconds. The function returns true if the readyRead() signal is emitted and there is data available for reading; otherwise it returns false (if an error occurred or the operation timed out). |
|
|
Текстовая версия | Сейчас: 30.12.2024, 20:49 |