Не работает htons

Тема в разделе "WASM.NETWORKS", создана пользователем tester3000, 21 июл 2009.

  1. tester3000

    tester3000 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2006
    Сообщения:
    140
    Пробую написать сервер на сокетах столкнулся с такой проблемой

    Код (Text):
    1. ; отрывок из моего кода проверки выкинул
    2.    invoke  WSAStartup,202h,wsaData
    3.    invoke  socket,AF_INET,SOCK_STREAM,0
    4.    mov     [hSocket],eax
    5.    mov     [saddr.sin_family],AF_INET
    6.    invoke  htons,szPort
    7.    mov     [saddr.sin_port],ax
    8.  
    9. ; в секции data
    10.  
    11. wsaData WSADATA
    12. saddr   sockaddr_in
    13. szPort  dd 3333
    14. hSocket dd ?
    Порт не конвертируется в Network-Byte-Order загружаю в Olly и там вместо htons стоит ntohs

    [​IMG]

    Что делаю не так ?
     
  2. tester3000

    tester3000 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2006
    Сообщения:
    140
    Хотя вызывается
    Код (Text):
    1. CALL DWORD PTR DS:[<&WS2_32.htons>]
    а в комментарии Olly пишет ntohs
     
  3. tester3000

    tester3000 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2006
    Сообщения:
    140
  4. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    это одно и тоже. по смыслу. меняет байты местами
     
  5. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Ты на фасме кодишь? попробуй написать [szPort]
    Новички, бросайте нафуй фасм, не ломайте себе мозг и судьбы - кодьте как нормальные белые люди - на масме
     
  6. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    В крайнем случае делай руками mov eax,[szPort] / xchg ah,al
     
  7. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    или bswap
     
  8. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    MSoft
    bswap eax
     
  9. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    max7C4
    ax
     
  10. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    max7C4
    неверно :) GoldFinch правильно поправил :)
     
  11. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    MSoft
    если для порта согласен. GoldFinch прав. но в 32-х битной среде, чтобы избежать появления префиксов, лучше xchg, для портов, но если не ошибаюсь, ip тоже надо разворачивать - там то тогда bswap eax.
     
  12. tester3000

    tester3000 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2006
    Сообщения:
    140
    MSoft

    Спасибо точно блин забыл про квадратные скобки :dntknw:

    Ну нет нафуй ваш masm в топку ! Надоели его офсеты и т.д. :) я начинал кодить потом попробывал на fasm и теперь пока не собираюсь переходить на masm
     
  13. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    всех фасмщиков в детстве напугал большой оффсет :) с тех пор они с ним не связываются :)

    П.С.: если б картинку не приложил, тут бы еще доооолго гадали...
     
  14. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    ну хз, я сразу обратил внимание, то что это фасм (квадратные скобки есть при обращении к переменным), посмотрел параметр и всё стало ясно :)
     
  15. tester3000

    tester3000 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2006
    Сообщения:
    140
    MSoft

    Что-то я поспешил не пашет все равно

    после
    Код (Text):
    1. invoke  htons,[szPort]
    [​IMG]
    Если после этого делаю
    Код (Text):
    1. xchg    ah,al
    [​IMG]

    Но если посмотреть список активных портов в системе

    [​IMG]

    Решил попробывать сделать так

    mov eax,[szPort]
    xchg ah,al

    Olly показывает
    [​IMG]

    а Active Ports нормально выдает порт 3333 заместо 1293

    Если просто сделать

    mov eax,[szPort]

    Olly правильно показывает а Active Ports 1293

    Короче я совсем запутался кому верить хз )))
     
  16. tester3000

    tester3000 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2006
    Сообщения:
    140
    Вообщем вопрос остается открытым почему не пашет WinAPI

    Код (Text):
    1. htons
    Да конечно можно средствами asm сделать но мне интересно почему htons не пашет

    Всё равно фасм не брошу, потому что он хороший! :)
     
  17. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Все правильно у тебя работает функция. Твой порт в хекс-представлении: 3333 = 0D05h! После обмена байт он равен 050Dh. Что и видно на рисунках в ольке!
     
  18. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Ты вместо гаданий лучше попробуй подключиться к нужному порту после его открытия.
     
  19. tester3000

    tester3000 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2006
    Сообщения:
    140
    MSoft

    Спс действительно протестил все пашет :))
     
  20. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Не зря значит я закончил курсы экстрасексов... экстрасенсов