Net WinAPI , в часности connect

Тема в разделе "WASM.BEGINNERS", создана пользователем Swat2k, 28 мар 2009.

  1. Swat2k

    Swat2k Дима

    Публикаций:
    0
    Регистрация:
    14 май 2007
    Сообщения:
    64
    Давно хотел разобраться с сетевыми апи , много раз начинал но времени небыло особо изучать . Сейчас оно появилось . Почитал msdn вроде все верно написал , но с сервером не соединяется ...
    делаю wsagetlasterror получаю код connection refused . В то же время через мирку норм заходит на сервер .

    Код (Text):
    1. .386                                  
    2. .model flat, stdcall                    
    3. option casemap:none
    4.  
    5. include bin\inc\windows.inc
    6. include bin\inc\user32.inc
    7. include bin\inc\kernel32.inc
    8. include bin\inc\wsock32.inc
    9.  
    10. includelib bin\lib\user32.lib
    11. includelib bin\lib\kernel32.lib
    12. includelib bin\lib\wsock32.lib
    13.  
    14. .data
    15.  
    16. port        dd  6667h
    17. IP      db  "192.168.0.199",0
    18.  
    19. msgNick     db "nick asmBOT",10,13
    20. msgUser     db "user q w e@test.com f",0
    21.  
    22. .data?
    23.  
    24. sHandle     dd       ?
    25. _wsadata    WSADATA     < >
    26. _sockaddr   sockaddr_in     < >
    27.  
    28. .code
    29. OEP:
    30.     invoke WSAStartup,101h,offset _wsadata
    31.     mov ax,101h
    32.     cmp ax,word ptr [_wsadata.wVersion]
    33.     jne @Exit
    34.    
    35.     invoke socket,AF_INET,SOCK_STREAM,0
    36.     cmp eax,-1
    37.     je @Exit
    38.     mov sHandle,eax
    39.    
    40.     mov ax,AF_INET
    41.     mov _sockaddr.sin_family,ax
    42.     invoke htons,port
    43.     mov _sockaddr.sin_port,ax
    44.     invoke inet_addr,offset IP
    45.     mov _sockaddr.sin_addr,eax
    46.     invoke connect,sHandle,offset _sockaddr,sizeof _sockaddr
    47.     cmp ax,-1
    48.     je @Exit
    49.    
    50.     mov eax,sizeof msgNick
    51.     add eax,sizeof msgUser
    52.     invoke send,sHandle,offset msgNick,eax,0
    53.     cmp ax,-1
    54.     je @Exit
    55.     invoke Sleep,30000h
    56. @Exit:
    57.     invoke WSAGetLastError 
    58.     invoke ExitProcess,0
    59. end OEP
     
  2. bendme

    bendme New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2009
    Сообщения:
    179
    Для начала напиши прогу так, чтобы было понятно, какая именно функция тебя выбрасывает на @Exit: WSAStartup,socket или send. Логически, конечено, понятно, что функция connect, но всё-же. Это во-первых. Во-вторых, у irc порт=6667. А у тебя порт=26215, так как в шестнадцеричной системе обозначен. Попробуй заменить 6667h на 6667 или на 6667d (Я не помню точно, какое у вас, у ассемблерщиков, обозначение десятеричной системы) и снизайдет на тебя божья благодать :)