Russian Qt Forum
Октябрь 01, 2024, 18:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: пассивный TCP  (Прочитано 5801 раз)
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« : Июнь 22, 2013, 12:51 »

Есть 8 внешних источников данных, которые по своей инициативе будут подключаться к пассивным TCP-сокетам.
За каждым закреплен свой порт, в зависимости от порта(источника) данные будут отличаться по формату.
Вопрос: как создать на принимающей стороне пассивные TCP сокеты?

QT 4.6
Записан

Как мало времени и как много нужно узнать
Serr500
Гость
« Ответ #1 : Июнь 22, 2013, 13:52 »

QTcpServer::listen
Записан
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« Ответ #2 : Июнь 22, 2013, 18:23 »

QTcpServer::listen

Если я правильно понял, то это всего лишь определение, какие принимать адреса-порты.
У меня другая задача: слушать определенный порт и не важно откуда будет подключение, принимать любое.
Только сокет должен быть пассивно открыт.
Как это сделать?
Записан

Как мало времени и как много нужно узнать
Bepec
Гость
« Ответ #3 : Июнь 22, 2013, 18:37 »

Вам не кажется парадоксом ваши сообщения (в частности это)

Цитировать
За каждым закреплен свой порт

Цитировать
какие принимать адреса-порты.

?

PS вам уже ответили.
Записан
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« Ответ #4 : Июнь 22, 2013, 19:06 »

"закреплен порт" за типом информации, т.е. на определенный порт приходит информация определенного типа.
А откуда - не важно. Не надо проверять источник.
Записан

Как мало времени и как много нужно узнать
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« Ответ #5 : Июнь 22, 2013, 19:09 »

Цитировать

PS вам уже ответили.
Не понял. Как порт сделать ПАССИВНЫМ?
Записан

Как мало времени и как много нужно узнать
Bepec
Гость
« Ответ #6 : Июнь 22, 2013, 19:43 »

Блин, вы случаем не политик?

Точно так же "Как интернет сделать безопасным для детей?" Нужно удалить интернет!

удивляет...

Порт вяжется НА машине. Откуда оно приходит - его не волнует.

На обоих концах соединения есть по порту. Вот вы один конец цепляете на своём компе.
Записан
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« Ответ #7 : Июнь 22, 2013, 19:49 »

Я всего лишь хочу узнать

как мне на моем компе инициировать несколько портов на прием?

Зачем столько эмоций?
Лучше кусочек кода Строит глазки

Записан

Как мало времени и как много нужно узнать
IGreench
Гость
« Ответ #8 : Июнь 23, 2013, 01:01 »

Вот тут хорошие "кусочки кода" и просто полезная информация: http://www.prog.org.ru/topic_11138_0.html
Записан
Serr500
Гость
« Ответ #9 : Июнь 23, 2013, 08:47 »

Если я правильно понял, то это всего лишь определение, какие принимать адреса-порты.
У меня другая задача: слушать определенный порт и не важно откуда будет подключение, принимать любое.
Только сокет должен быть пассивно открыт.
Как это сделать?
Вы неправильно поняли. QTcpServer::listen(const QHostAddress& address, quint16 port) открывает на локальной машине на IP-адресе/адресах address и порту port "слушающий"/"серверный" TCP-сокет (который Вы называете "пассивным"). После этого к данной паре address:port можно подключаться извне, если, конечно, файрволл разрешает). То есть это и есть решение Вашей задачи. Когда клиент попытается подключиться к вашему сокету, экземпляр класса сгенерирует сигнал newConnection. Создаёте связанный с ним слот, в котором через nextPendingConnection получите QTcpSocket этого соединения. Дальше делаете с ним всё, что хотите.

Я всего лишь хочу узнать

как мне на моем компе инициировать несколько портов на прием?
Код:

for (int i = 0; i < SOCKETS_COUNT; i++)
{
    TcpServers[i] = new QTcpServer();
    TcpServers[i]->listen(QHostAddress::Any, Ports[i]);
}
« Последнее редактирование: Июнь 23, 2013, 08:50 от Serr500 » Записан
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« Ответ #10 : Июнь 23, 2013, 08:53 »

Спасибо большое
Записан

Как мало времени и как много нужно узнать
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.099 секунд. Запросов: 22.