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