elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  Solucionar WSAEWOULDBLOCK
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Solucionar WSAEWOULDBLOCK  (Leído 3,336 veces)
Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Solucionar WSAEWOULDBLOCK
« en: 16 Mayo 2013, 00:33 am »

Hola amigos! Tengo el siguiente problema que me esta torturando... ya llevo horasss...

Bueno, el codigo primero:

Código:

Conn:
invoke connect, sock, addr sa, sizeof sa

.IF eax==SOCKET_ERROR

     invoke WSAGetLastError

     .IF eax==WSAEWOULDBLOCK

          jmp Conn

     .ELSEIF eax==WSAEALREADY

  jmp Conn

     .ELSE

  ;Por lo general, conexion establecida u otro ErrorCode

     .ENDIF

.ENDIF

Ok,, estoy usando el ejemplo de Iczelion, con Socket y procedimiento de ventana...
El problema esta en que la conexion queda trancada en error: WSAEWOULDBLOCK, y por lo que entendi de este error es algo asi como: "Dame un minuto que estoy intentando conectar" jajaja Bueno, no es asi literalmente, pero seria algo asi, "socket ocupado". Como el ejemplo funciona con procedimientos de ventana, el programa se cuelga al quedar en un bucle de conexion infinito, (intentando conectar y haciendo loop en volver a conectar...)
entonces la ventana no aparece siquiera..
Se me ocurre poner un timer, pero no tengo ni idea por donde empezar... Alguna sugerencia o algun metodo timer pleaseee!!

Thnks all !!


En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.471


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Solucionar WSAEWOULDBLOCK
« Respuesta #1 en: 16 Mayo 2013, 08:35 am »

La MSDN dice que pruebes con select: http://msdn.microsoft.com/en-us/library/windows/desktop/ms740141(v=vs.85).aspx

Eso sale de la parte de Return value de connect: http://msdn.microsoft.com/en-us/library/windows/desktop/ms737625(v=vs.85).aspx


En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Solucionar WSAEWOULDBLOCK
« Respuesta #2 en: 16 Mayo 2013, 19:43 pm »

Nuu, es verdad.. como me olvide del select.. Muchas gracias MCKSys! Voy a intentarlo, si no lo logro sigo este hilo..

EDITADO:

Bueno, había escrito un montón de cosas y se me expiro la sesión, así que voy a ser breve...

La msdn dice que no puedo usar o que no seria lo correcto ( entiendo yo ) usar select porque estoy usando WSAAsyncSelect, y cuando conecta me envía FD_CONNECT como un mensaje a la ventana,, eso todo bien... el problema es que al parecer, connect se pisa el palito comparado con:

Conn:
invoke connect....
cmp eax, 0
jne Conn

o sea, me fijo si me conecte demasiado rápido y no le doy tiempo a connect...
parece que volví al principio...  timer quizás ? :(
« Última modificación: 16 Mayo 2013, 21:10 pm por Vaagish » En línea

Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Solucionar WSAEWOULDBLOCK
« Respuesta #3 en: 16 Mayo 2013, 22:04 pm »

Ok! Solucionado...


Código:

...

.ELSEIF uMsg==WM_SOCK

     mov edx, lParam

          .IF dx==FD_CONNECT

       shr edx, 16
      .IF dx==NULL

      ;Conexion establecida
       invoke send, sock, addr szSockStr, sizeof szSockStr, 0

          .ELSE

;Error
mov eax, OFFSET ThreadProc
invoke CreateThread, NULL, NULL, eax, NULL, NORMAL_PRIORITY_CLASS, ADDR ThreadID

invoke CloseHandle, eax

   .ENDIF


Listo.. he ahi la solucion.. vale aclarar que la conexion la hace un hilo.. asi no me tranca la ventana..
Y esta bueno comentar que si uso esto:

invoke CreateThread, NULL, NULL, eax, NULL, CREATE_SUSPENDED, ADDR ThreadID  

O sea, le pongo la flag CREATE_SUSPENDED, y luego resumethread, el antivirus salta como pelota de goma jajaja

Conste que mis .IF y .ELSEIF estaban bien ubicados  :¬¬
« Última modificación: 16 Mayo 2013, 22:07 pm por Vaagish » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda para solucionar mi bug!
Programación Visual Basic
brako 5 1,641 Último mensaje 28 Enero 2006, 00:04 am
por brako
Solucionar problema
Programación C/C++
piratascp 2 2,727 Último mensaje 29 Septiembre 2010, 16:40 pm
por piratascp
solucionar fix chanel -1 « 1 2 »
Wireless en Linux
Paul Young 14 8,062 Último mensaje 22 Marzo 2012, 17:59 pm
por Seaworth
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines