Автор Тема: Пример из туториала Iczelion`a по Winsock не работает  (Прочитано 1028 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Zap

  • Коллежский регистратор
  • *
  • Сообщений: 7
  • Репутация: 0
Ув. эксперты,помогите разобраться.

MASM
XP

Все работает до вызова ф-ии connect().которая возвращает ошибку :
"Bad address.The system detected an invalid pointer address in attempting to use a pointer argument of a call. This error occurs if an application passes an invalid pointer value, or if the length of the buffer is too small. For instance, if the length of an argument, which is a sockaddr structure, is smaller than the sizeof(sockaddr)."
---
.DATA
bIPAddress db  "127.0.0.1",0                                         
wPort      dw   80
ws  WSADATA <>
sin sockaddr_in  <>

.data?
dSock dd  ?
------------
              invoke WSAStartup,101h,addr ws      ;так же и с 202h
.if eax
              MsgBox "WSAStartup failed."
              invoke ExitProcess, NULL
.endif   
 
              invoke socket,PF_INET,SOCK_STREAM,0     
             
.if eax == INVALID_SOCKET
              MsgBox "socket failed."
              jmp EXIT
.endif             
         
              mov dSock,eax
             
              mov sin.sin_family, AF_INET
              invoke htons, wPort                   
              mov sin.sin_port,ax                 
              invoke inet_addr, addr bIPAddress   
              mov sin.sin_addr,eax
              invoke connect,dSock,addr sin,sizeof sin
.if eax != 0
              invoke WSAGetLastError
              MsgBox "connect failed with error - %d.",eax
              jmp EXIT         
.endif               

              MsgBox "connect OK."

EXIT:
invoke WSACleanup   
invoke ExitProcess, NULL

end start

Оффлайн dEEp

  • Глобальный модератор
  • Тайный советник
  • *****
  • Сообщений: 2021
  • Репутация: 29
  • Пол: Мужской
1. код нужно тыкать в соответствующие теги.
2. ошибку легко перевести в гугл. там всё и поймёшь.
Подпись - есть нечто иное, как изъяснение общей сути человека, выраженное кем-то более великим, чем тот, кто написал его в каком-либо месте в любой форме изложения....