![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
borune |
![]()
Сообщение
#1
|
Участник ![]() ![]() Группа: Участник Сообщений: 152 Регистрация: 1.1.2011 Пользователь №: 2314 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Ребят, такой вопрос.
Вот есть, например, некая многопоточная сетевая программа, выполняющаяся на всех сетевых машинах. Каждый поток отвечает за сетевое взаимодействие с одним определенным узлом (т.е. число потоков равно числу узлов в сети - 1). В каждом потоке требуется организовать сокет для обмена данными между двумя машинами. Вопрос в том, как это реализовать. У меня есть такая идея. Сделать в потоке сервер, который будет слушать нужный порт. Когда кто-то в этот порт стучится, обработчик сигнала QTcpServer::newConnection() создает сокет и анализирует его peerAddress. Если он совпадает с адресом той машины, за обмен с которой отвечает данный поток, то по созданному сокету начинается передача данных. В ином случае сокет должен быть передан "дальше", т.е. он должен будет попасть в другой поток, из него в следующий, и так далее, до тех пор, пока не дойдет до нужного потока. Ввот как передать созданный сокет в другой поток? Если кто не очень понял о чем речь, то тот же вопрос можно перефразировать так: если имеются несколько объектов QTcpServer, которые слушают один и тот же порт, то все ли эти объекты будут имитировать сигнал newConnection() при подключении кого-то в этому порту, и смогу ли я при помощи метода QTcpServer::nextPendingConnection() получить доступ к сокету и работать с ним в каждом из потоков? Сообщение отредактировал borune - 15.10.2013, 13:01 |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 16.7.2025, 20:52 |