|
102 / 87 / 17
Регистрация: 04.05.2011
Сообщений: 1,330
|
||||||
Как узнать свой адрес07.08.2012, 21:05. Показов 5420. Ответов 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 ? Как скрыть свой адрес эл. почты? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|