![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
ubuntu |
![]()
Сообщение
#1
|
Студент ![]() Группа: Новичок Сообщений: 32 Регистрация: 10.10.2007 Пользователь №: 9 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Хочу написать клент-серверное приложение на Qt, как я понимаю мне нужно использовать классы QTcpServer и QTcpSocket.
Но что-то я не могу понять, почему при соединении не вызывается newConnection, в моей классе производном от QTcpServer, хотя функция вроде виртуальная. И пока не совсем понятно, как строить взаимодействие слушающего сокета с соединениями. |
|
|
ViGOur |
![]()
Сообщение
#2
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Ну все достаточно просто, если разобраться. Попробую набросать пример:
Класс производный от QTcpServer, собственно сам сервер:
Запускается сервер так:
При получении соединения вызывается incomingConnection в котором полученное соединение добавляется в обработчик соединений, класс CxInteraction.
Класс потока, в котором устанавливаются сигналы и слоты для соединения:
Класс работы с самим соединением:
Вот и все, что от тебя требуется. ![]() |
|
|
ubuntu |
![]()
Сообщение
#3
|
Студент ![]() Группа: Новичок Сообщений: 32 Регистрация: 10.10.2007 Пользователь №: 9 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Спасибо, разобрался
|
|
|
Гость_antoshib_* |
![]() ![]()
Сообщение
#4
|
Гости ![]() |
привет, а почему сразу с таких сложных примеров начинать?
Помогите пожалуйста с простейшим серверком. Нужно из консольного клиентского приложения отправить строчку и в консольном серверном приложении вывести принятую строку в дебаг. Делаю так: сервер: Раскрывающийся текст
клиент: Раскрывающийся текст
все запускается, но соединение сбрасывается.. ((
Причина редактирования: codebox - неудобен
|
|
|
kwisp |
![]()
Сообщение
#5
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
Гость_antoshib_*
начни со стандартных примеров поставляемых с библиотекой. |
|
|
Гость_antoshib_* |
![]()
Сообщение
#6
|
Гости ![]() |
Гость_antoshib_* начни со стандартных примеров поставляемых с библиотекой. С них и начал.. Но там сразу предлагается через потоки делать - не наглядно совсем! выкрутился пока так, в сервере: CODE .... char *rb = new char( blockSize ); uint br = (uint) blockSize; in.readBytes( rb, br ); qDebug() << "Received: " << rb; delete[] rb; |
|
|
Gambit |
![]()
Сообщение
#7
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 12.6.2010 Пользователь №: 1802 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
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
|
Участник ![]() ![]() Группа: Участник Сообщений: 158 Регистрация: 23.12.2010 Из: Челябинск Пользователь №: 2296 Спасибо сказали: 10 раз(а) Репутация: ![]() ![]() ![]() |
Есть вопрос по поводу передачи данных. Вот на этом участке кода
А что если нужно отправить не только текст, а допустим число, или объект в одном этом блоке? Как это сделать, примеров не нашел. |
|
|
sidsukana |
![]()
Сообщение
#9
|
Участник ![]() ![]() Группа: Участник Сообщений: 158 Регистрация: 23.12.2010 Из: Челябинск Пользователь №: 2296 Спасибо сказали: 10 раз(а) Репутация: ![]() ![]() ![]() |
Никто не объяснит?
|
|
|
BRE |
![]()
Сообщение
#10
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: ![]() ![]() ![]() |
Ну так и серилизуй все что нужно в out.
|
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 24.5.2025, 10:52 |