коннект не пашет

Тема в разделе "WASM.BEGINNERS", создана пользователем ragim, 18 сен 2011.

  1. ragim

    ragim New Member

    Публикаций:
    0
    Регистрация:
    8 июл 2010
    Сообщения:
    47
    пишет тимед оут
    Код (Text):
    1.     wsadata WSADATA <>
    2.     server  db  "google.ru",0
    3.     msg db  "OLEH servername"
    4.     succ    db  "succsess",0
    5.     extms   db  "exiting",0
    6.     conmsg  db  "connected",0
    7.     ip  db  "10.64.254.65",0
    8.    
    9.    
    10.     .data?
    11.     hsocket dd  ?
    12.     buf dd  ?
    13.     saddr   SOCKADDR <>
    14.     ipnum   dd  ?
    15.    
    16.    
    17.         .code
    18.     start:
    19.     invoke WSAStartup, VERSION1_1, addr wsadata
    20.     cmp eax, 0
    21.     jne exit
    22.     invoke  socket, AF_INET, SOCK_STREAM, IPPROTO_TCP
    23.     mov hsocket, eax
    24.     mov saddr.sin_family, AF_INET
    25.     invoke  htons, 80
    26.     mov saddr.sin_port, ax
    27.     invoke  gethostbyname, addr server
    28.     mov eax, dword ptr [eax+12]
    29.     mov eax,dword ptr [eax]
    30.     mov saddr.sin_addr, eax
    31.     ;------
    32.     invoke  inet_addr, addr ip
    33.     mov ipnum, eax
    34.     ;mov    saddr.sin_addr, offset ipnum
    35.     ;------
    36.     invoke connect, hsocket, addr   saddr,size SOCKADDR
    37.     invoke  WSAGetLastError
    38.     test    eax, eax
    39.     jnz exit
    40.     invoke  MessageBox,NULL,addr conmsg,NULL,MB_OK
    41.     invoke  send, hsocket, addr msg, 15, 0
    42.     invoke  recv, hsocket, addr buf, 4, 0
    43.     cmp eax, "022"
    44.     jne skip
    45.    
    46.     invoke  MessageBox,NULL, addr   succ,NULL,MB_OK
    47.     skip:
    48.    
    49.     invoke  closesocket, hsocket
    50.     exit:
    51.     invoke  MessageBox,NULL,addr extms,NULL,MB_OK
    52.    
    53.     invoke  ExitProcess, 0
    54. end start
     
  2. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    Код (Text):
    1. invoke    gethostbyname, addr server
    2. mov    eax, dword ptr [eax+12]
    3. mov    eax,dword ptr [eax]
    4. mov    eax,dword ptr [eax]    ;; !!! add
    5. mov saddr.sin_addr, eax
     
  3. ragim

    ragim New Member

    Публикаций:
    0
    Регистрация:
    8 июл 2010
    Сообщения:
    47
    добавил но теперь даже не пытаясь подключится пишеt error file not found
     
  4. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    > добавил но теперь даже не пытаясь подключится пишеt error file not found
    кто пишет? в твоем коде нет таких сообщений.

    заготовка
    Код (Text):
    1. invoke  WSAStartup, 101h, addr wsadata
    2. test    eax, eax
    3. jnz WSAStartup_faled
    4.  
    5. invoke  socket, AF_INET, SOCK_STREAM, IPPROTO_TCP
    6. cmp eax, INVALID_SOCKET
    7. jz  socked_failed
    8.  
    9. mov hsocket, eax
    10. mov saddr.sin_family, AF_INET
    11. invoke  htons, 80
    12. mov saddr.sin_port, ax
    13.  
    14. invoke  gethostbyname, addr server
    15. test    eax, eax
    16. jz  gethostbyname_failed
    17.  
    18. mov eax, dword ptr [eax+12]
    19. mov eax,dword ptr [eax]
    20. mov eax,dword ptr [eax]
    21. mov saddr.sin_addr, eax
    22.  
    23. invoke  connect, hsocket, addr saddr, size saddr
    24. test    eax,eax
    25. jnz connect_failed
    26.  
    27. ;; everything is alright
    28.  
    29. ...
    30.  
    31. connect_failed:
    32.  
    33. ...
    34.  
    35. gethostbyname_failed:
    36.  
    37. ...
    38.  
    39. socked_failed:
    40.  
    41. ...
    42.  
    43. WSAStartup_faled:
    44.  
    45. ...
     
  5. ragim

    ragim New Member

    Публикаций:
    0
    Регистрация:
    8 июл 2010
    Сообщения:
    47
    q_q
    какая разница просто такую ошибку выдаёт (если вазно то отлаживал в оллыдбг и после вызова коннект получаем вышеописанную ошибку)
     
  6. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    > отлаживал в оллыдбг и после вызова коннект получаем вышеописанную ошибку
    Afaik olly показывает LastError, какое отношение она имеет к winsock функциям?

    Что касается твоего кода, то успешность вызова connect проверяется содержимым eax, если оно не равно нулю, то причину можно узнать вызвав WSAGetLastError, а не как у тебя в коде, сразу после connect вызов WSAGetLastError.