Форум: "Начинающим";
Текущий архив: 2009.08.30;
Скачать: [xml.tar.bz2];
ВнизСокеты. Заполнение структуры адреса сервера Найти похожие ветки
← →
Цукор5 (2009-06-30 13:04) [0]Предположим, у меня несколько сетевых подключений. Скажем, 3.
Что я должен указывать в адресе ?
Addr.sin_family:=PF_Inet;
Addr.sin_port:=HToNS(некий порт);
Addr.sin_addr.S_addr:=InAddr_Any; // !!! или Inet_Addr(IP одного из моих соединений);
← →
Сергей М. © (2009-06-30 13:55) [1]
> или Inet_Addr(IP одного из моих соединений);
На момент заполнения структуры никаких соединений с удаленными клиентами еще нет
← →
Цукор5 (2009-06-30 13:59) [2]Нет.
← →
Сергей М. © (2009-06-30 14:50) [3]Чего "нет" ?
Я у тебя ничегло не спрашивал - это утверждение, а не вопрос)
← →
Цукор5 (2009-06-30 15:32) [4]Тогда я не понял ответ.
У меня 2 соединения для инета и локалки. А третье это GPRS и именно по нему будут идти пакеты от удаленных устройств.
Ну и чего мне ставить в Addr.sin_addr.S_addr ?
← →
Сергей М. © (2009-06-30 16:08) [5]
> У меня 2 соединения для инета и локалки. А третье это GPRS
Это не соединения , а сетевые интерфейсы.
Плюс к ним существует еще loopback-интерфейс localhost (127.0.0.1)
Каждый существующий в системе сетевой интерфейс ассоциирован как минимум с одним IP-адресом.
InAddr_Any означает, что твой прикладной сервер будет взаимодействовать с любым из IP-адресов любого из доступных сет.интерфейсов.
Для того чтобы твой сервер обслуживал только тех клиентов, которые будут ходить к нему через сет.интерфейс, ассоцированный с GPRS-устройством, в поле S_addr следует указать тот или иной IP-адрес, ассоциированный с этим интерфейсом.
← →
Цукор5 (2009-06-30 17:17) [6]Спасибо !
← →
Сергей М. © (2009-06-30 17:27) [7]
> или Inet_Addr(IP одного из моих соединений);
Не забывай про перевод порядка следования байт: в поле S_addr он д.б. указан как сетевой, а не машинный.
см.
htonl() - машинный в сетевой,
ntohl() - сетевой в машинный
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.08.30;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c