|
102 / 87 / 17
Регистрация: 04.05.2011
Сообщений: 1,330
|
||||||
Как узнать свой адрес07.08.2012, 21:05. Показов 5455. Ответов 12
Метки нет (Все метки)
В нете много кто чего предлагает, как узнать свой IP. Интересует способ для C++Builder, компонента ClientSocet.
0
|
||||||
| 07.08.2012, 21:05 | |
|
Ответы с готовыми решениями:
12
Как в MFC определить программно свой IP-адрес и имя машины?
|
|
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
|
|
| 07.08.2012, 21:24 | |
|
Aleator, IP адрес это вещь очень относительная. Тебе он вообще зачем? Не факт что то, что ты увидишь в LocalAddress будет совпадать с тем, что увидит сервер. Точнее они будут совпадать только при определенных условиях.
Есть конечно вариант подключиться к сайтам, которые дают такую информацию, ну тогда тебе нужно искать формат команд, которые они используют.
0
|
|
|
102 / 87 / 17
Регистрация: 04.05.2011
Сообщений: 1,330
|
|
| 07.08.2012, 22:14 [ТС] | |
|
solar_wind, пишу простенький FTP-клиент на ClientSocet-е. Нужно отправить команду Port со всей необходимой информацией (IP-адрес)...
0
|
|
|
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
|
|
| 08.08.2012, 05:08 | |
|
Aleator, Вообще FTP клиент может и не иметь статического адреса.... Знание IP актуально для серверных систем, но не для клиентских.... Ты точно ничего не путаешь?
В общем случае, тот IP, который ты узнаешь, для сервера вообще никакой значимости иметь не будет, так как по нему все равно до тебя не достучаться...... Кроме того сервер его и так видит....
0
|
|
|
102 / 87 / 17
Регистрация: 04.05.2011
Сообщений: 1,330
|
|
| 08.08.2012, 06:36 [ТС] | |
|
Из методички:
"Обычно соединение данных открывается следующим образом: -клиент создает сокет данных S1 и выбирает свободный порт на своем хосте; -клиент привязывает сокет данных к своему IP адресу и свободному (не задействованому)порту функцией bind. -клиент включает порт на прослушивание запросов от сервера функцией listen; -клиент создает командный сокет S2 -клиент связывается с сервером функцией connect, используя при ее вызове командный сокет S2 и заполненную структуру sockaddr_in с IP адресом сервера и портом 21 - клиент передает серверу по управляющему соединению команды(USER,PASS) и сообщает серверу командой PORT свой IP-адрес и номер порта, на который сделал открытие. допустим IP-адрес хоста клиента будет 10.21.23.10, а номер порта 2000). Клиент посылает серверу по управляющему соединению команду PORT 10,21,23,10,7,208 . Номер порта строится так – 7*256+208 = 2000. Сервер после получения этой команды попытается сделать активное открытие указанного порта и в случае удачи вернет что-то вроде «200 PORT command successful. Consider using PASV.»; - сервер, получив порт и IP-адрес осуществляет его активное открытие; - клиент системным вызовом accept извлекает из очереди, организованной системным вызовом listen, первый запрос на соединение и возвращает дескриптор нового (автоматически созданного) сокет S3 с теми же свойствами, что и созданный сокет данныхS1. - После этого передаются или принимаются данные функциями recv,send, которые при их вызове в качестве аргумента используют сокет S3; - в зависимости от того кто передает, а кто принимает данные осуществляется закрытие порта. "
0
|
|
|
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
|
|
| 08.08.2012, 06:46 | |
|
Aleator, А ну понятно, это вариант с активным режимом, возможен еще и пассивный режим.
В этом режиме наличие внешнего IP обязательно. Ну тогда либо заставляй пользователя самому указывать свой внешний IP и порт (поидее пользователь должен это знать), либо подключайся к одному из сайтов, которые сообщают твой IP. Но для реальной программы, мне кажется, первый вариат предпочтительней, он более гибкий.
1
|
|
|
102 / 87 / 17
Регистрация: 04.05.2011
Сообщений: 1,330
|
|
| 08.08.2012, 06:59 [ТС] | |
|
Порт, понятное дело, пользователь должен знать. А вот внешний IP? Он ведь пользователем не задаётся...
0
|
|
|
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
|
|
| 08.08.2012, 07:03 | |
|
Aleator, Ну обычно если пользователь имеет внешний IP, он за не го денюшку провайдеру платит, так что знать поидее должен или может запросить в техподдержке провайдера....
1
|
|
|
Временно недоступен
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
|
|||||||||||
| 08.08.2012, 14:28 | |||||||||||
|
Если не ошибаюсь, когда вызываете bind, можно указать опцию AI_PASSIVE:
1
|
|||||||||||
|
102 / 87 / 17
Регистрация: 04.05.2011
Сообщений: 1,330
|
|
| 10.08.2012, 06:56 [ТС] | |
|
#pragma, спасибо! Но я уже использую готовый компонент ClientSocket. Поэтому сразу его открываю, посылаю команды USER,PASS. А далее нужно отправить команду PORT. Думаю надо всё-таки покопаться в свойствах сокета...
Если что, интересует способ для C++Builder, компонента ClientSocet.
0
|
|
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
||
| 10.08.2012, 09:44 | ||
![]() ТС хочет getsockname() для билдера, думается код из 1го сообщения оно и есть. Еще можно дать возможность пользователю указать этот адрес на случай NAT'а не умеющего прозрачно проксировать ftp.
1
|
||
|
Временно недоступен
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
|
|
| 10.08.2012, 17:40 | |
|
g_u_e_s_t, интересно, тогда значит, что в поле sa_data будут нули или что-то другое?
0
|
|
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
|
| 10.08.2012, 18:33 | |
|
#pragma, сложный вопрос
![]() INADDR_ANY там будет точно, т.е. на практике, да, нули (по крайней мере в значащей части). А в теории я не знаю места в стандартах (в том же POSIX про это не слова) где требуют чтобы INADDR_ANY был равен именно 0 и тот же Стивенс пишет htonl(INADDR_ANY). Может это паранойя, а может он что-то знает, но не говорит
1
|
|
| 10.08.2012, 18:33 | |
|
Помогаю со студенческими работами здесь
13
Сокеты: как узнать ip адрес, с которым "связался" сервер?
Узнать свой внешний IP адрес Как узнать ип адрес или мак адрес в порту коммутатора dell n3048 через веб интерфейc ? Как скрыть свой адрес эл. почты? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3.
Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|