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
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