Russian Qt Forum
Ноябрь 24, 2024, 05:48
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Работа с сетью
>
QTcpSocket и несколько интерфейсов
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: QTcpSocket и несколько интерфейсов (Прочитано 5813 раз)
RaZeR
Гость
QTcpSocket и несколько интерфейсов
«
:
Март 28, 2011, 18:08 »
Всем привет.
Поставили задачу написать клиент для обмена пакетами по TCP протоколу.
Имеется:
МСВС, Qt 4.2.2 и 2 сетевых карточки.
Вопрос:
Как можно привязать QTcpSocket к конкретному интерфейсу(ip адрес и порт)? В итоге должно как бы быть два канала для обмена(2 QTcpSoket'а), каждый по своему интерфейсу через определенный порт общается со своим конкретным собеседником.
Пробовал setLocalAddress и setLocalPort,но что то не захотели они с QTcpSoket'ом работать. Есть ли аналог UDP'шного bind для TCP сокетов в QT или только неявно назначается порт и интерфейс через connectToHost?
Записан
vunder
Гость
Re: QTcpSocket и несколько интерфейсов
«
Ответ #1 :
Март 29, 2011, 12:24 »
Если у тебя 2 сетевые карты, то они должны иметь разные ip-адреса. Соответственно, куда тебе нужно подключаться, тот ip-адрес и указывай, в чем проблема то?
Записан
RaZeR
Гость
Re: QTcpSocket и несколько интерфейсов
«
Ответ #2 :
Март 29, 2011, 18:00 »
я может не верно понимаю конечно работу функции connectToHost, но помоему там указывает ip адрес и порт того с кем связываешься, а вопрос в том как заставить каждый сокет через свою сетевуху слать, т.е. грубо говоря на моей машине ip:1.1.1.1 и 1.1.2.1, на другой стороне 1.1.1.2 и 1.1.2.2. 1-й QTcpSoket должен слать с сетевухи 1.1.1.1 и определенного порта на удаленную сторону в адрес 1.1.1.2, 2-й сокет соответственно через второй сетевой интерфейс. в connectToHost я указываю на какой адрес и порт буду данные слать, а вот как заставить слать с определенного адреса и порта?
Записан
Командор
Гость
Re: QTcpSocket и несколько интерфейсов
«
Ответ #3 :
Март 29, 2011, 21:45 »
Один мой товарищ делал что-то подобное, говорил что лучше всего использовать роутинг. Т.е. проблему решать на уровне операционки. В принципе это логично - в API или tool-ките обеспечивается базовая работа с сокетами, а все навороты типа фильтрации и направления реализовать с помощью ОС, потому как это очень сильно завязано на ОС.
Записан
RaZeR
Гость
Re: QTcpSocket и несколько интерфейсов
«
Ответ #4 :
Март 30, 2011, 05:59 »
Спасибо за совет, это наверное единственный выход из данной проблемы.
Записан
CuteBunny
Гость
Re: QTcpSocket и несколько интерфейсов
«
Ответ #5 :
Март 30, 2011, 08:35 »
SetLocalAddress и SetLocalPort не пробовали на стороне клиента?
Записан
RaZeR
Гость
Re: QTcpSocket и несколько интерфейсов
«
Ответ #6 :
Март 30, 2011, 17:30 »
с QTcpSocket'ом почему то не смог заставить работать их....ошибку выдавали,хотя возможно такой код неверен:
QTcpSocket *tcpClient = new QTcpSocket(this);
tcpClient->setLocalPort(1035);
ну и дальше tcpClient->connectToHost и т.д.
Записан
CuteBunny
Гость
Re: QTcpSocket и несколько интерфейсов
«
Ответ #7 :
Март 31, 2011, 03:46 »
Из документации по QAbstractSocket у методов SetLocalPort и SetLocalAddress написано замечание:
Цитировать
Note that this function does not bind the local port of the socket prior to a connection (e.g., QUdpSocket::bind()).
Т.е. наверное надо в начале вызвать метод connectToHost, а потом эти методы, насколько я понимаю.
Записан
RaZeR
Гость
Re: QTcpSocket и несколько интерфейсов
«
Ответ #8 :
Март 31, 2011, 19:38 »
ошибка не о том что до или после connectToHost использую, а о том что они в protected находятся у QAbstractSocket и подобный вызов неправилен.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...