QTcpServer и QTcpSocket, как с ними работать? |
Здравствуйте, гость ( Вход | Регистрация )
QTcpServer и QTcpSocket, как с ними работать? |
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
|
Гости |
Гость_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 |
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.
|
|
|
Текстовая версия | Сейчас: 26.12.2024, 13:23 |