Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
ubuntu |
10.10.2007, 16:12
Сообщение
#1
|
|
Студент ![]() Группа: Новичок Сообщений: 32 Регистрация: 10.10.2007 Пользователь №: 9 Спасибо сказали: 0 раз(а) Репутация: 0
|
Хочу написать клент-серверное приложение на Qt, как я понимаю мне нужно использовать классы QTcpServer и QTcpSocket.
Но что-то я не могу понять, почему при соединении не вызывается newConnection, в моей классе производном от QTcpServer, хотя функция вроде виртуальная. И пока не совсем понятно, как строить взаимодействие слушающего сокета с соединениями. |
|
|
|
|
ViGOur |
10.10.2007, 16:40
Сообщение
#2
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40
|
Ну все достаточно просто, если разобраться. Попробую набросать пример:
Класс производный от QTcpServer, собственно сам сервер: Запускается сервер так: При получении соединения вызывается incomingConnection в котором полученное соединение добавляется в обработчик соединений, класс CxInteraction. Класс потока, в котором устанавливаются сигналы и слоты для соединения: Класс работы с самим соединением: Вот и все, что от тебя требуется. |
|
|
|
|
ubuntu |
11.10.2007, 8:09
Сообщение
#3
|
|
Студент ![]() Группа: Новичок Сообщений: 32 Регистрация: 10.10.2007 Пользователь №: 9 Спасибо сказали: 0 раз(а) Репутация: 0
|
Спасибо, разобрался
|
|
|
|
| Гость_antoshib_* |
21.4.2010, 11:39
Сообщение
#4
|
|
Гости |
привет, а почему сразу с таких сложных примеров начинать?
Помогите пожалуйста с простейшим серверком. Нужно из консольного клиентского приложения отправить строчку и в консольном серверном приложении вывести принятую строку в дебаг. Делаю так: сервер: Раскрывающийся текст клиент: Раскрывающийся текст все запускается, но соединение сбрасывается.. ((
Причина редактирования: codebox - неудобен
|
|
|
|
|
kwisp |
22.4.2010, 9:22
Сообщение
#5
|
|
астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23
|
Гость_antoshib_*
начни со стандартных примеров поставляемых с библиотекой. |
|
|
|
| Гость_antoshib_* |
24.4.2010, 9:32
Сообщение
#6
|
|
Гости |
Цитата(kwisp @ 22.4.2010, 9:22) Link Гость_antoshib_* начни со стандартных примеров поставляемых с библиотекой. С них и начал.. Но там сразу предлагается через потоки делать - не наглядно совсем! выкрутился пока так, в сервере: CODE .... char *rb = new char( blockSize ); uint br = (uint) blockSize; in.readBytes( rb, br ); qDebug() << "Received: " << rb; delete[] rb; |
|
|
|
|
Gambit |
14.7.2010, 17:16
Сообщение
#7
|
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 12.6.2010 Пользователь №: 1802 Спасибо сказали: 0 раз(а) Репутация: 0
|
Цитата(ViGOur @ 10.10.2007, 16:40) Link const CxInteraction * const m_pInteraction; Ругается ((((..\network_demo_1\/networkdemo.h:85: error: ISO C++ forbids declaration of 'CxInteraction' with no type ..\network_demo_1\/networkdemo.h:85: error: expected ';' before '*' token Ну и далеее Цитата CxConnectionThread::CxConnectionThread( qint32 qnSocket, QObject *pParent):QThread( pParent), m_pInteraction( (CxInteraction*)pParent) { m_qnSocket = qnSocket; } ..\network_demo_1\/networkdemo.h: In constructor 'CxConnectionThread::CxConnectionThread(qint32, QObject*)': ..\network_demo_1\/networkdemo.h:102: error: class 'CxConnectionThread' does not have any field named 'm_pInteraction' ..\network_demo_1\/networkdemo.h:102: error: 'CxInteraction' was not declared in this scope ..\network_demo_1\/networkdemo.h:102: error: expected primary-expression before ')' token In file included from ..\network_demo_1\main.cpp:2: ..\network_demo_1\/networkdemo.h: In member function 'virtual void CxConnectionThread::run()': Цитата qCritical( "Error in file: %s, line: %d %s", __FILE__, __LINE__, __FUNCSIG__); ..\network_demo_1\/networkdemo.h:153: error: '__FUNCSIG__' was not declared in this scope ..\network_demo_1\/networkdemo.h: In member function 'CxConnectionThread* CxInteraction::CreateThread(qint32)': ..\network_demo_1\/networkdemo.h:193: warning: format '%x' expects type 'unsigned int', but argument 2 has type 'CxConnectionThread*' ..\network_demo_1\/networkdemo.h:197: error: '__FUNCSIG__' was not declared in this scope ..\network_demo_1\/networkdemo.h: In member function 'void CxInteraction::CloseThread()': ..\network_demo_1\/networkdemo.h:212: warning: format '%x' expects type 'unsigned int', but argument 2 has type 'CxConnectionThread*' |
|
|
|
|
sidsukana |
8.8.2011, 17:10
Сообщение
#8
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 158 Регистрация: 23.12.2010 Из: Челябинск Пользователь №: 2296 Спасибо сказали: 10 раз(а) Репутация: 2
|
Есть вопрос по поводу передачи данных. Вот на этом участке кода
А что если нужно отправить не только текст, а допустим число, или объект в одном этом блоке? Как это сделать, примеров не нашел. |
|
|
|
|
sidsukana |
9.8.2011, 15:48
Сообщение
#9
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 158 Регистрация: 23.12.2010 Из: Челябинск Пользователь №: 2296 Спасибо сказали: 10 раз(а) Репутация: 2
|
Никто не объяснит?
|
|
|
|
|
BRE |
9.8.2011, 21:51
Сообщение
#10
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44
|
Ну так и серилизуй все что нужно в out.
|
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 14.12.2025, 23:04 |