|
[Qt] Знатоки кута и С++¸ пните меня для разгону :) (организация классов) | ☑ | ||
|---|---|---|---|---|
|
0
bvn13
30.01.10
✎
00:26
|
Ничего очень серьезного на настоящих ООП не писал, тут идея подвернулась, а я застопарился. поэтому прошу сабжануть маленько.
Хочу реализовать клиент-серверное приложение. Точнее, отдельно - сервер, отдельно - клиент. Сервер. 1) Ждет коннекта по порту1. Когда есть коннект делает авторизацию. Если авторизация пройдена, то присваивает этому клиенту ИД. 2) Ждет коннекта по порту2 когда есть коннект,то спрашивает ИД. если ИД получен и он есть в списке ИД для ожидания, то все ОК. иначе - полный отвал при "Все ОК", сервер посылает данные по порту1, принимает данные от клиента по порту 2. Клиент - соответственно все наоборот с точностью до нормальной реакции сервера. Вот уже который день сижу и туплю. Читаю мануали по куту, вообще по клиент-серверным реализациям... а ничего толкового в плане организации структуры классов на ум не приходит. Подскажите идею, плз. |
|||
|
1
Fragster
гуру
30.01.10
✎
00:30
|
блин, а что, через 1 порт в обе стороны слать не судьба?
|
|||
|
2
bvn13
30.01.10
✎
00:31
|
(1) видать, не судьба, ибо эти потоки никак не синхронизированы должны быть
|
|||
|
3
b_ru
30.01.10
✎
00:32
|
||||
|
4
Лефмихалыч
30.01.10
✎
00:33
|
(0) а разве иерархия классов на этапе проектирования как-то зависит от платформы?
|
|||
|
5
Fragster
гуру
30.01.10
✎
00:34
|
(2) дык и что?
|
|||
|
6
bvn13
30.01.10
✎
00:36
|
(5) тогда не пойму...
(4) хм... платформа выбрана изначально. (так проще понимать мне) (3) ты меня сразу хочешь убить? я в этом не бельмес... хех :( |
|||
|
7
bvn13
30.01.10
✎
00:43
|
сервер. думается так... начало.
class server { struct s_serverinfo { QTcpServer *tcpServer; QTcpSocket *tcpClient; QTcpSocket *tcpServerConnection; int bytesToWrite; int bytesWritten; int bytesReceived; } in, out; //это для входящего-исходящего потока данных QList<QString> clientQueue; //это очередь с ИД клиентов (для проверки при коннекте по порту2 } а вот дальше - затык. понимаю, что нужно будет отдельные thread-ы делать для постоянного слушания портов и каждого клиента... но что-то это не вяжется в единую структуру |
|||
|
8
bvn13
30.01.10
✎
00:45
|
если это важно, то Qt 4.6.0
|
|||
|
9
trdm
30.01.10
✎
01:45
|
(8) лично мне пофигу.
|
|||
|
10
trdm
30.01.10
✎
01:47
|
А если сорцы ngix покурить или на хабре пару статей почитать не прийдет понимание? или мумуки творчества замумучали?
|
|||
|
11
Torquader
30.01.10
✎
15:18
|
А чем мешает общение через один порт - если есть что читать, то читаем, а если есть что передать, то передаём - сокет же двунаправленный и ему нет разницы, что ушло в одну сторону, а что в другую.
Насколько я помню, есть такие "неблокирующие сокеты", которые позволяют вызывать чтение, не прерывая основного потока. Несколько потоков будет нужно или для отработки длинных действий или для работы с несколькими клиентами. |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |