Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: ciruit en 31 Diciembre 2005, 18:22 pm



Título: Ayuda con winsock.
Publicado por: ciruit en 31 Diciembre 2005, 18:22 pm
Buenas.
Estoy en un proyecto "chat" entre dos pc. He creado sólo un formulario el cual actua como cliente y server. Cuando se hace la petición de A hacia B, sólo B queda server. Si se desconecta uno los dos pasan a ser servers y asi...
El punto es que, una vez establecida la conexión, si cierro el socket en A (cliente) los dos son server (arriba lo explique xD) y si me quiero volver a conectar desde B hacia A (ahora al revéz) no hay ningun problema. PERO si alguno está actuando como cliente, y desde el mismo cierro el socket ya no me puedo volver a conectar al server que estaba con anterioridad (en netstat me aparece TIME_WAIT, osea como si tuviera algo pendiente que recibir, cosa que no debería aparecer), quedando bloqueada tambíen la petición de conexión desde el server al cliente. Osea ya no funciona ninguno de los dos casos. Entonces en necesario cerrar tanto server como cliente para que vuelvan a la normalidad.

Ahora la pregunta del millón:
¿Que puede estar obstruyendo la re-petición desde un mismo punto a otro?

Gracias.


Título: Re: Ayuda con winsock.
Publicado por: MaLkAvIaN_NeT en 31 Diciembre 2005, 18:55 pm
..Bueno no entendí muy bien pero podrías resetear los sóckets antes de reutilizarlos.

salu2


Título: Re: Ayuda con winsock.
Publicado por: Slasher-K en 31 Diciembre 2005, 19:35 pm
Tutorial del control WinSock
http://foro.elhacker.net/index.php/topic,75832.0.html

Tema pegado...

Saludos.


Título: Re: Ayuda con winsock.
Publicado por: ciruit en 31 Diciembre 2005, 21:50 pm
Mmmm y ¿cómo lo reseteo?
Gracias por el tutorial. Lo estoy leyendo.


Título: Re: Ayuda con winsock.
Publicado por: NYlOn en 1 Enero 2006, 02:06 am
Citar
Mmmm y ¿cómo lo reseteo?
Código:
Winsock1.Close
Winsock1.Listen / .Connect 'depende si es cliente o servidor.

Saludos y Feliz año a todos!.-


Título: Re: Ayuda con winsock.
Publicado por: ciruit en 1 Enero 2006, 17:58 pm
Emmm... eso lo hago siempre ;D.
El punto es que el cliente no es capaz de cerrar correctamente la conexión por el puerto especificado.
He hecho una prueba que primero ocupe un puerto y en la próxima conexión otro diferente y no hay problema tanto desde cualquier punto.
Es decir el puerto queda ocupado y no se cierra por completo a pesar de que cerre el socket.
Tal vez existe alguna función capaz de cerrar completamente una conexión sin importar su estado.
Ojala me puedan ayudar.
Saludos.


Título: Re: Ayuda con winsock.
Publicado por: NYlOn en 1 Enero 2006, 22:31 pm
No estas usando un OCX verdad?? Eso de indicar que se cierren los puertos e igual quedan abiertos creo que sucede con las APIs.
Intenta destruyendo los sockets, hay una funcion que lo hace,
buscala.

Un saludo y feliz año.-


Título: Re: Ayuda con winsock.
Publicado por: Sancho.Mazorka en 2 Enero 2006, 00:38 am
hola eso me pasa a mi tambien pero es porque si cerras el servidor con
Código:
ws.close
el cliente queda en Cerrando conexion que seria el estado numero 8 y para solucionarlo tendrias que hacer antes de cerrarlo hacer
Código:
ws.sendata "cerrar"
y en el dataarrival del otro poner esto
Código:
ws.getdata datos, vbstring
if datos = "cerrar" then ws.close 'osea si es el server ws.close y despues ws.close y si no ws.close solo

PD: espero que te sirva el mas cerca fue NYlOn.


Sancho Mazorka     :P


Título: Re: Ayuda con winsock.
Publicado por: NYlOn en 2 Enero 2006, 01:08 am
O sino, en los eventos Close y Error podes poner Winsock1.Close

Saludos.-


Título: Re: Ayuda con winsock.
Publicado por: ciruit en 2 Enero 2006, 04:13 am
hola eso me pasa a mi tambien pero es porque si cerras el servidor con
Código:
ws.close
el cliente queda en Cerrando conexion que seria el estado numero 8 y para solucionarlo tendrias que hacer antes de cerrarlo hacer
Código:
ws.sendata "cerrar"
y en el dataarrival del otro poner esto
Código:
ws.getdata datos, vbstring
if datos = "cerrar" then ws.close 'osea si es el server ws.close y despues ws.close y si no ws.close solo

PD: espero que te sirva el mas cerca fue NYlOn.


Sancho Mazorka     :P

Mmmm... creo que va por ahi la cosa. Pero el punto es que al presionar un botón que le puse "Desconectar" lo primero que hace es llamar al método CLOSE y además en el evento Close también esta puesto el método close entonces es extraño.
Voy a probar lo que me dices y te cuento.

PD: ¿Destruir un socket? :shocked:


Título: Re: Ayuda con winsock.
Publicado por: NYlOn en 2 Enero 2006, 04:41 am
Citar
PD: ¿Destruir un socket?

Si usas APIs para controlar los sockets los podes crear en tiempo de ejecucion y destruirlos...

Saludos.-


Título: Re: Ayuda con winsock.
Publicado por: ciruit en 2 Enero 2006, 16:30 pm
Analice bien la idea de arriba y esta bien lo que se dice con respecto a que el estado pudiese ser "Cerrando." pero no sería posible enviar un mensaje ya que en los dos puntos se ejecuta el método CLOSE. Además el problema, al parecer reside en el cliente y no en el server.

Con respecto a lo de hacer un socket con API parece ser buena la idea. ¿Tienes información al respecto?

Gracias.


Título: Re: Ayuda con winsock.
Publicado por: ciruit en 5 Enero 2006, 21:12 pm
Ya lo solucioné.
Sólo había que reiniciar el localport. Osea winsock1.localport = 0.
Gracias a todos.


Título: Re: Ayuda con winsock.
Publicado por: miguesoft en 11 Enero 2006, 23:23 pm
me podrian decir como transferir un archivo (un .exe por ejm) por medio del winsock. Se los agradeceria muchisimo


Título: Re: Ayuda con winsock.
Publicado por: chebu en 12 Enero 2006, 16:36 pm
yo tmb necesito envia un archivo exe y no puedo no se como hacerlo y me toy volviendoo loco :'( no cmo no duermoo  :'( :'( :'(


Título: Re: Ayuda con winsock.
Publicado por: NYlOn en 12 Enero 2006, 21:16 pm
Citar
no cmo no duermoo

Eso no ayuda en nada... Cuando tenga tiempo posteo el codigo.

Saludos.-


Título: Re: Ayuda con winsock.
Publicado por: Sancho.Mazorka en 13 Enero 2006, 04:20 am
no te mates mira si buscaras podrias comer. en la parte de virus y troyanos hay un post q esta pegado creo que es este troyano en vb desde 0  por fulano. hay tens de todo y tenes para mandar archivos anda muy bien lo unico que le tenes que solucionar unas cosas que no interfieren en la parte de subir o enviar archivos. Salu2


Sancho Mazorca     :P