No se puede conectar mi cliente al servidor WINSOCK

Iniciado por zetaperu, 28 Abril 2015, 19:38 PM

0 Miembros y 1 Visitante están viendo este tema.

zetaperu

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

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

Ninfrock

Hola

Deberias poner directamente un ws_server.close

Código (vb) [Seleccionar]
Private Sub ws_server_ConnectionRequest(ByVal requestID As Long)
'cuando llegue una petición para conectarse la aceptamos
ws_server.Close
ws_server.Accept requestID
End Sub


Aqui debe ser asi ws_server.GetData str_datos, vbString

Código (vb) [Seleccionar]
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, 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
UNIX es muy simple, solo que se necesita ser un genio para entender su simplicidad.