Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: запуск QTcpServer на заданном интерфейсе
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие
borune
Ребят, добрый день!

Имеется задача организовать тестирование сети на потери пакетов. Процесс тестирования осуществляется одновременным обменом сообщениями между всеми узлами сети с использованием QTcpSocket. Каждый узел должен фиксировать статистику, т.е. иметь две таблицы, в первой указывается что и кому он отправил, во второй - что и от кого он получил.

Как отправлять пакеты понятно - создаем потоки, в каждом потоке создаем сокет, подключаемся к целевому узлу (его адрес известен), и начинаем слать пакеты. А вот с чтением не очень понятно. Если у узла один сетевой интерфейс, то все более-менее ясно - запускаем сервер, ждем входящего подключения, при его наличии создаем сокет и читаем из него данные. А вот если у узла несколько сетевых интерфейсов, как в этом случае быть? Может я что-то упустил из документации, но у QTcpServer'a вроде бы нет параметра, указывающего на каком адресе он запускается. Он что, сразу все подключения ко всем интерфейсам перехватывает?
Trisch
А что несколько сетевых интерфейсов имеют один адрес?
borune
Цитата(Trisch @ 8.10.2013, 13:27) *
А что несколько сетевых интерфейсов имеют один адрес?

Нет, у всех адаптеров адреса разные.
Yuriy
Цитата(borune @ 8.10.2013, 12:21) *
А вот если у узла несколько сетевых интерфейсов, как в этом случае быть? Может я что-то упустил из документации, но у QTcpServer'a вроде бы нет параметра, указывающего на каком адресе он запускается. Он что, сразу все подключения ко всем интерфейсам перехватывает?

Упустили:
bool QTcpServer::listen ( const QHostAddress & address = QHostAddress::Any, quint16 port = 0 )
Tells the server to listen for incoming connections on address address and port port. If port is 0, a port is chosen automatically. If address is QHostAddress::Any, the server will listen on all network interfaces.
borune
Цитата(Yuriy @ 11.10.2013, 13:13) *
Цитата(borune @ 8.10.2013, 12:21) *
А вот если у узла несколько сетевых интерфейсов, как в этом случае быть? Может я что-то упустил из документации, но у QTcpServer'a вроде бы нет параметра, указывающего на каком адресе он запускается. Он что, сразу все подключения ко всем интерфейсам перехватывает?

Упустили:
bool QTcpServer::listen ( const QHostAddress & address = QHostAddress::Any, quint16 port = 0 )
Tells the server to listen for incoming connections on address address and port port. If port is 0, a port is chosen automatically. If address is QHostAddress::Any, the server will listen on all network interfaces.


Да, спасибо, прочел невнимательно.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.