Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сокеты. Заполнение структуры адреса сервера [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 одного из моих соединений);


На момент заполнения структуры никаких соединений с удаленными клиентами еще нет


Наверх

Титульная страница Поиск, карта сайта Написать письмо