Размер SOCKADDR в вызове функции Connect для FASM

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

  1. medal

    medal New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    8
    Адрес:
    Russia
    Пример из уроков, но как реализовать первую строку примера применительно к FASM?



    push size SOCKADDR ;;;=== Как реализовать в FASM

    lea eax,[ebp+saddr]

    push eax

    push dword ptr [ebp+SocketHandle]

    call connect

    inc eax

    jz close_socket



    Спасибо.
     
  2. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    Попробуй push sizeof.SOCKADDR
     
  3. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    [это я с прямым углом перепутал]
     
  4. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    не, гоню
     
  5. medal

    medal New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    8
    Адрес:
    Russia
    push sizeof.SOCKADDR - для FASMa не катит.
     
  6. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    а структура SOCKADDR описана? там в инклудах не все структуры описаны - нужно самому описывать. я проверил push sizeof.WNDCLASS - получилось (фасм не ругался)
     
  7. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    Код (Text):
    1. 00401000            00            DB      00      ;========================================
    2. 00401001            00            DB      00      format      pe gui
    3. 00401002            00            DB      00      include     '%fasminc%\win32a.inc'
    4. 00401003            00            DB      00      ;========================================
    5. 00401004            00            DB      00      sa          sockaddr
    6. 00401005            00            DB      00      ;========================================
    7. 00401006            00            DB      00      entry       $
    8. 00401007            00            DB      00                  push    sizeof.sockaddr
    9. 00401008            00            DB      00                  invoke  ExitProcess,0
    10. 00401009            00            DB      00      ;========================================
    11. 0040100A            00            DB      00      data        import
    12. 0040100B            00            DB      00      library     kernel32,'kernel32.dll'
    13. 0040100C            00            DB      00      include     '%fasminc%\apia\kernel32.inc'
    14. 0040100D            00            DB      00      end         data
    15. 0040100E            00            DB      00      ;========================================
    16. 0040100F            00            DB      00
    17. 00401010 <Modul>/$  6A 10         PUSH    10
    18. 00401012        |.  6A 00         PUSH    0                                      ; /ExitCode = 0
    19. 00401014        \.  FF15 57104000 CALL    DWORD PTR [<&kernel32.ExitProcess>]    ; \ExitProcess
     
  8. IceStudent

    IceStudent Active Member

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

    1) описать структуру и использовать sizeof.SOCKADDR

    2)

    sa SOCKADDR

    sa_len equ $ - SOCKADDR
     
  9. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    ну, дык, мелкий регистр, видимо: push sizeof.sockaddr
     
  10. NoName

    NoName New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    1.229
    У кого такие сложности, могут и в регистр сначала размер запихнуть. А те кто плохо дружат с совместимостью пускай вписывают размер вручную сразу цифрами.