аналог long2ip

Тема в разделе "WASM.NETWORKS", создана пользователем Flasher, 12 дек 2005.

  1. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    long2ip - как я понял, php функция...

    Есть ли аналог в стандартных dll'елках, чтоб например 1040547840 превратить в нормальный ip адрес?

    Спасибо.
     
  2. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    Flasher

    Что такое "нормальный ip адрес"?

    Не достаточно в правильном порядке взять байты из long'а, ведь long - это четыре байта?
     
  3. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    inet_ntoa
     
  4. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    q_q, 127.0.0.1 - вот это нормальный ip адрес :)

    Особо не углюблялся, но говорят: 1040547840 - превращает в ip.



    Чуток изменил функцию из masm32.lib, и вот что получилось:
    Код (Text):
    1. .data
    2. _Target db "1040547840",0
    3. szStr db ".",0
    4. Buffer db 256 dup(?)
    5.  
    6. .code
    7. IPtoString proc IP:DWORD,lpBuffer:DWORD
    8.     LOCAL val1[4]:BYTE
    9.     LOCAL val2[4]:BYTE
    10.     LOCAL val3[4]:BYTE
    11.     LOCAL val4[4]:BYTE
    12.  
    13.     push esi
    14.     push edi
    15.     movzx esi, BYTE PTR IP[8]
    16.     invoke dwtoa,esi,ADDR val1
    17.     movzx esi, BYTE PTR IP[16]
    18.     invoke dwtoa,esi,ADDR val2
    19.     movzx esi, BYTE PTR IP[24]
    20.     invoke dwtoa,esi,ADDR val3
    21.     movzx esi, BYTE PTR IP[32]
    22.     invoke dwtoa,esi,ADDR val4
    23.     mov edi, lpBuffer
    24.     mov BYTE PTR [edi], 0
    25.     invoke szMultiCat,7,lpBuffer,ADDR val1,ADDR szStr,ADDR val2,ADDR szStr,
    26.                                  ADDR val3,ADDR szStr,ADDR val4
    27.     pop edi
    28.     pop esi
    29.     ret
    30. IPtoString endp
    31. start:
    32. invoke IPtoString,offset _Target,offset Buffer
    33. invoke MessageBox,0,offset Buffer,offset Buffer,0
    34. invoke ExitProcess,0
    35. end start




    Я в правильном направлении, или это бред? :)
     
  5. ssx

    ssx Member

    Публикаций:
    0
    Регистрация:
    19 авг 2003
    Сообщения:
    336
    ну что ты страдаешь - сказали же - inet_ntoa The inet_ntoa function converts an (Ipv4) Internet network address into a string in Internet standard dotted format.
     
  6. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    ssx

    А я не видел :)

    кстати, а как именно юзать inet_ntoa ?



    invoke inet_ntoa,1040547840 ?
     
  7. ssx

    ssx Member

    Публикаций:
    0
    Регистрация:
    19 авг 2003
    Сообщения:
    336
  8. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    ssx, знаю я как юзать inet_ntoa.

    просто при invoke inet_ntoa,1040547840 результат более правдаподобен :)



    _Target db "1040547840",0

    invoke inet_ntoa,offset _Target - 0.48.64.0

    invoke inet_ntoa,1040547840 - 0.128.5.62
     
  9. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine


    Чушь. Почитай туториал в статьях, многое прояснится.
     
  10. Guest

    Guest Guest

    Публикаций:
    0
    "_Target db "1040547840",0"

    Причем тут строки.


    Код (Text):
    1.  
    2. char* FAR inet_ntoa(
    3.   struct   in_addr in
    4. );
    5.