Visual Basic - Control Winsock

Life is soft - evento anual de software empresarial
   
Vista:

Control Winsock

Publicado por Carlos (1 intervención) el 07/11/2007 11:11:35
Hola, tengo un problema con un programa cliente/servidor que estoy haciendo, sacado de un tutorial. El programa sirve para mandar mensajes entre ordenadores conectados en red. (un pequeño chat) pero que no me funciona, el error que me da es el siguiente:

Error: 40006 en tiempo de ejecución.
"Protocolo o estado de conexión erroneo para la transacción o petición solicitada"

El servidor parece que funciona bien, porque le doy a "escuchar" y veo que me abre el puerto especificado (888) en modo escucha "listening".

En cuanto al cliente, le pulso en conectar, para que se conecte al servidor y parece que no hace nada, (lo miro con el comando "netstat" de MS-DOS, y no veo que se conecte a ningún puerto remoto). Y luego cuando pulso para enviar mensaje, me sale el error que os he puesto arriba.

El código del CLIENTE es:

Private Sub Form_Load()

Winsock1.LocalPort = "888" ' Establecemos el valor del puerto local para la conexión

End Sub

'CONECTANDONOS AL SERVIDOR

Private Sub CommandConectar_Click()

Winsock1.RemoteHost = Text2.Text ' Establecemos el Ordenador Remoto
Winsock1.Connect 'Realizamos la conexión
End Sub

'RECIBIENDO DATOS

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim Datos As String

Winsock1.GetData Datos

TextRecibir.Text = TextRecibir.Text + Datos

End Sub

' ENVIANDO DATOS

Private Sub CommandEnviar_Click()
Dim envio As String

envio = TextEnviar.Text

Winsock1.SendData envio

TextEnviar.Text = ""
End Sub


Private Sub Form_Unload(Cancel As Integer)
Winsock1.Close
End Sub

==================================================================

El código del SERVIDOR es:

Private Sub Form_Load()

Winsock1.LocalPort = "888" ' Establecemos el puerto local para la conexión

End Sub

'NOS PREPARAMOS PARA ACEPTAR CONEXIONES REMOTAS

Private Sub CommandEscuchar_Click()

Winsock1.Listen ' Ponemos la conexión a la escucha.

End Sub

'PREPARAMOS LA CONEXIÓN PARA QUE CAPTURE DATOS ENTRANTES

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim Datos As String

Winsock1.GetData Datos ' Al llegar algún datos lo meterá en la variable Datos

TextRecibir.Text = TextRecibir.Text + Datos ' Metemos los datos en la caja de texto Mensaje

End Sub

'ACEPTAMOS LAS PETICIONES DE CONEXIÓN

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)

Winsock1.Close
Winsock1.Accept requestID 'Aceptamos las peticiones de conexión que lleguen

End Sub

Private Sub CommandEnviar_Click()
Dim Envio As String

Envio = TextEnviar.Text

Winsock1.SendData Envio ' Enviamos el texto del mensaje

TextEnviar.Text = "" ' Limpiamos el cuadro de texto

End Sub


Private Sub Form_Unload(Cancel As Integer)
Winsock1.Close
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Control Winsock

Publicado por Carlos (1 intervención) el 08/11/2007 09:48:52
Ya lo he solucionado. El problema estaba en la primera línea del Cliente, en la que había que poner el puerto remoto de conexión , y no el local:

Winsock1.RemotePort = "888" ' Establecemos el valor del puerto local para la conexión
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar