Russian Qt Forum

Qt => Работа с сетью => Тема начата: Примерный ученик от Июнь 22, 2013, 12:51



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

QT 4.6


Название: Re: пассивный TCP
Отправлено: Serr500 от Июнь 22, 2013, 13:52
QTcpServer::listen


Название: Re: пассивный TCP
Отправлено: Примерный ученик от Июнь 22, 2013, 18:23
QTcpServer::listen

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


Название: Re: пассивный TCP
Отправлено: Bepec от Июнь 22, 2013, 18:37
Вам не кажется парадоксом ваши сообщения (в частности это)

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

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

?

PS вам уже ответили.


Название: Re: пассивный TCP
Отправлено: Примерный ученик от Июнь 22, 2013, 19:06
"закреплен порт" за типом информации, т.е. на определенный порт приходит информация определенного типа.
А откуда - не важно. Не надо проверять источник.


Название: Re: пассивный TCP
Отправлено: Примерный ученик от Июнь 22, 2013, 19:09
Цитировать

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


Название: Re: пассивный TCP
Отправлено: Bepec от Июнь 22, 2013, 19:43
Блин, вы случаем не политик?

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

удивляет...

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

На обоих концах соединения есть по порту. Вот вы один конец цепляете на своём компе.


Название: Re: пассивный TCP
Отправлено: Примерный ученик от Июнь 22, 2013, 19:49
Я всего лишь хочу узнать

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

Зачем столько эмоций?
Лучше кусочек кода ::)



Название: Re: пассивный TCP
Отправлено: IGreench от Июнь 23, 2013, 01:01
Вот тут хорошие "кусочки кода" и просто полезная информация: http://www.prog.org.ru/topic_11138_0.html


Название: Re: пассивный TCP
Отправлено: Serr500 от Июнь 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]);
}


Название: Re: пассивный TCP
Отправлено: Примерный ученик от Июнь 23, 2013, 08:53
Спасибо большое