powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Объясните по функции inet_pton
8 сообщений из 8, страница 1 из 1
Объясните по функции inet_pton
    #39116216
araman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сразу к делу, вот сорц:
Код: plaintext
1.
2.
3.
4.
struct sockaddr_in antelope;
memset(&antelope, 0, sizeof (antelope));

inet_pton(AF_INET, '192.168.1.49',  &antelope.sin_addr);



Получаю число(822192320), затем хотел бы его обратно преобразовать к читабельному виду, пробую в mysql, получаю:
Код: sql
1.
SELECT inet_ntoa(822192320);



49.1.168.192 это так и должно было преобразовать или здесь есть какая то своя магия? В php кстати тоже почему то ip адрес "наоборот".

Господа, в чем профит? Просветите :)
...
Рейтинг: 0 / 0
Объясните по функции inet_pton
    #39116266
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
araman, в разных архитектурах железа байтики внутри DWORD могут быть как слева направо
так и наоборот.

Когда кодишь на сях надо учитывать это в любом API которое работает с RAW-массивами байтов.
...
Рейтинг: 0 / 0
Объясните по функции inet_pton
    #39116268
YesSql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aramanСразу к делу, вот сорц:
Код: plaintext
1.
2.
3.
4.
struct sockaddr_in antelope;
memset(&antelope, 0, sizeof (antelope));

inet_pton(AF_INET, '192.168.1.49',  &antelope.sin_addr);



Получаю число(822192320), затем хотел бы его обратно преобразовать к читабельному виду, пробую в mysql, получаю:
Код: sql
1.
SELECT inet_ntoa(822192320);



49.1.168.192 это так и должно было преобразовать или здесь есть какая то своя магия? В php кстати тоже почему то ip адрес "наоборот".

Господа, в чем профит? Просветите :)
inet_ntoa это всего лишь sprintf(buff, "%u.%u.%u.%u", arg[0], arg[1], arg[2], arg[3]);
добавь ntohl()
...
Рейтинг: 0 / 0
Объясните по функции inet_pton
    #39116275
YesSql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonaraman, в разных архитектурах железа байтики внутри DWORD могут быть как слева направо
так и наоборот.

Когда кодишь на сях надо учитывать это в любом API которое работает с RAW-массивами байтов.
Нет, это каша в inet_ функциях. В сети используется bigendian.
...
Рейтинг: 0 / 0
Объясните по функции inet_pton
    #39116280
araman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Эм все круто господа, но как бы получить читабельный ip в php?
В нем есть функции аналогичные, но на вход он просит строку:
http://php.net/manual/en/function.inet-ntop.php

Понимаю, что php тут не сильно в теме ветки, но ведь если кодировать его стандартными функциями - то все чики чики.
...
Рейтинг: 0 / 0
Объясните по функции inet_pton
    #39116291
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
araman, во первых тебе уже подсказали как перевернуть байты.

Во вторых. При чём тут PHP? Мы в другом форуме вообщето.
...
Рейтинг: 0 / 0
Объясните по функции inet_pton
    #39116294
araman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сорри, про байты не увидел.
Про ветку форума я же указал, что не относится вопрос к пыху, но ведь его стандартными функциями все чики чики кодируется. Наверно я не учел тему байтов :)
...
Рейтинг: 0 / 0
Объясните по функции inet_pton
    #39116322
araman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, вопрос решен.
Если кому интересно, на php привести в читабельный вид будет так:
Код: php
1.
var_dump(inet_ntop(pack("l",822192320)));
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Объясните по функции inet_pton
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]