Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: zetaperu en 28 Abril 2015, 19:38 pm



Título: No se puede conectar mi cliente al servidor WINSOCK
Publicado por: zetaperu en 28 Abril 2015, 19:38 pm
Hola Foro,

Con respecto a la funcionalidad de mi codigo esta realizandolo perfecto, el problema radica al volver ejecutar mi cliente WINSOCK y éste realizar el proceso de conexión al servidor, se supone que mi servidor está ejecutandose esperando la comunicacion o peticion del cliente pero cuando éste vuelve a reconectar el estado del winsock cliente es 6 (conectandose) y por lo tanto la conexión nunca se vuelve a dar. He leido en casos similares y los tiempos de esperas que recomiendan no cambian en nada el estado, agradeceria de antemano una posible solución al mismo.

Adjunto parte del código

Código:
'****Server
Private Sub Form_Load()
ws_server.Close
'asignamos un puerto
ws_server.LocalPort = "8888"
'ponemos a la escucha el puerto asignado
ws_server.Listen
End Sub

Private Sub ws_server_ConnectionRequest(ByVal requestID As Long)
'cuando llegue una petición para conectarse la aceptamos
If ws_server.State <> sckClosed Then ws_server.Close
ws_server.Accept requestID
End Sub

Private Sub ws_server_DataArrival(ByVal bytesTotal As Long)
'aqui rebimos los datos que se envían y hacemos un reconocimiento
'así podemos tomar una decision
Dim str_datos As String
'el emvío se almacena en una cadena (str_datos)
ws_server.GetData str_datos

'****Cliente
Private Sub cmd_conectar_click()
'antes de conectarme el winsock debe estar cerrado
ws_cliente.Close

'me conecto a la pc remota utilizando su ip(la que ponemos en el textbox), x el puerto 8888
ws_cliente.Connect Me.txt_ip, "8888"

End Sub

Private Sub cmd_enviar_Click()
str_ruta_remota = Me.txt_ruta + Me.str_nombre_archivo

ws_cliente.SendData "archivo|" & Me.str_ruta_remota & "|" & lng_tamaño_archivo
End Sub

Private Sub ws_cliente_DataArrival(ByVal bytesTotal As Long)
'cada vez que se reciba algo se almacena en una cadena(str_dato_recibido)

Dim str_dato_recibido As String
ws_cliente.GetData str_dato_recibido

End Sub


Título: Re: No se puede conectar mi cliente al servidor WINSOCK
Publicado por: Ninfrock en 14 Mayo 2015, 07:30 am
Hola

Deberias poner directamente un ws_server.close

Código
  1. Private Sub ws_server_ConnectionRequest(ByVal requestID As Long)
  2. 'cuando llegue una petición para conectarse la aceptamos
  3. ws_server.Close
  4. ws_server.Accept requestID
  5. End Sub

Aqui debe ser asi ws_server.GetData str_datos, vbString

Código
  1. Private Sub ws_server_DataArrival(ByVal bytesTotal As Long)
  2. 'aqui rebimos los datos que se envían y hacemos un reconocimiento
  3. 'así podemos tomar una decision
  4. Dim str_datos As String
  5. 'el emvío se almacena en una cadena (str_datos)
  6. ws_server.GetData str_datos, vbString

y posible error es que despues de establecer la primera conexion el servidor sigue "conectado" o marca error, entonces no te deja conectarte, deberias colocar
un timer que compruebe el estado...

saludos