еЩЕ нЕМНОГО о пРОГРАММИРОВАНИИ Tcp/ip
итак. нужно организовать взаимодействие клиента и сервера в глобальной сети. как? в локалке все просто - клиенту указывается ip/порт сервера, сервер слушает порты на определенном интерфейсе (либо на всех интерфейсах). красотища.
а что делать если необходимо законнектится к удаленному клиенту? если ни у меня ни у него нет нет реального ip? при работе через NAT у нас с ним могут быть вообще о д и н а к о в ы е локальные ip... какие есть соображения, коллеги?
кстати с прошедшими и наступающим всех :)
собственно это тема не совсем для этого форума, но специального форума для сетевых программеров нет, а на форуме BC++B собраны лучшие силы :)
итак. нужно организовать взаимодействие клиента и сервера в глобальной сети. как? в локалке все просто - клиенту указывается ip/порт сервера, сервер слушает порты на определенном интерфейсе (либо на всех интерфейсах). красотища.
а что делать если необходимо законнектится к удаленному клиенту? если ни у меня ни у него нет нет реального ip? при работе через NAT у нас с ним могут быть вообще о д и н а к о в ы е локальные ip... какие есть соображения, коллеги?
кстати с прошедшими и наступающим всех :)
В глобальной сети говоришь...
Как правило - в таких случаях для сервера специально выделяется доменное имя - так что получить по нему реальный IP сервера проблем не составит...
Ежели доменного имени нету...
Знаешь как поступают в данном случае backdoor программы? Тупой перебор IP адресов... Можно конечно слать broadcast мессаги на подсеть... Но и второй и третий вариант будет отнимать слишком много времени для того чтобы найти сервер...
В глобальной сети говоришь...
Как правило - в таких случаях для сервера специально выделяется доменное имя - так что получить по нему реальный IP сервера проблем не составит...
Ежели доменного имени нету...
Знаешь как поступают в данном случае backdoor программы? Тупой перебор IP адресов... Можно конечно слать broadcast мессаги на подсеть... Но и второй и третий вариант будет отнимать слишком много времени для того чтобы найти сервер...
понятно что через ДНС легко... :)
а насчет перебора... что перебирать??? представь, что есть две сети с частными адресами. одна в Гонолулу, другая - в Урюпинске... и по случайности админы и той и другой локалки задали своим подсетям адреса 192.168.1.ххх. вот я написал прогу-клиент которая должна конектиться из локалки урюпинска в локалку на гаваях... конекчусь к серверу по адресу сервера 192.168.1.1
и что?
понятно что через ДНС легко... :)
а насчет перебора... что перебирать??? представь, что есть две сети с частными адресами. одна в Гонолулу, другая - в Урюпинске... и по случайности админы и той и другой локалки задали своим подсетям адреса 192.168.1.ххх. вот я написал прогу-клиент которая должна конектиться из локалки урюпинска в локалку на гаваях... конекчусь к серверу по адресу сервера 192.168.1.1
и что?
Создаешь уникальный порт для сервера/клиента - коннектишься по данному ip-шнику и порту - есть коннект - значит сервер найден - нет коннекта - значит не найден. Поехали дальше перебирать адреса. Но такой метод очень долгий, мягко скажем. А других не могу припомнить. И есть ли они вообще?
Ну еще вариант - как я говорил - к примеру сервер шлет broadcast сообщения на широкий диапазон адресов. Клиент ловит это сообщение - определяет IP - шник сервера и коннектится уже нормально.