Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Problema con WINSOCK

Estas en el tema de Problema con WINSOCK en el foro de Visual Basic clásico en Foros del Web. Bueno lo hago bien breve. Con el dataarrival recibo los paquetes hago lo siguiente Código: Private Sub WinSock_DataArrival(ByVal bytesTotal As Long) Dim Mensaje As String ...
  #1 (permalink)  
Antiguo 28/03/2007, 11:40
Avatar de culd  
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 20 años, 5 meses
Puntos: 19
Problema con WINSOCK

Bueno lo hago bien breve.

Con el dataarrival recibo los paquetes hago lo siguiente

Código:
Private Sub WinSock_DataArrival(ByVal bytesTotal As Long)
Dim Mensaje As String
WinSock.GetData Mensaje

Call PaqueteRecivido(Mensaje, WinSock)
End Sub
El PaqueteRecivido es un SUB, el cual procesa lo que se recive y segun lo que es envia un paquete al servidor... lo declaro asi...

Código:
Public Sub PaqueteRecivido(Mensaje as string, WSK as object)
Mi problema es que dentro del paqueterecibido si envio un paquete asi:
WSK.SendData PAQUETE

Envia unos caracteres raros... Pero si envio...

Form1.WinSock.SendData PAQUETE

Ahi envia correctamente...

Es decir, para que envie bien los paquetes tengo que usar la ruta exacta del control winsock.. No me sirve creado una variable object para manejar el winsock... Alguien sabe uq epuede ser?
  #2 (permalink)  
Antiguo 28/03/2007, 13:18
 
Fecha de Ingreso: octubre-2006
Mensajes: 11
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: Problema con WINSOCK

has intentado ke en ves de ke WSK sea de tipo object lo pongas de tipo winsock???

es decir en ves de tener:

Public Sub PaqueteRecivido(Mensaje as string, WSK as object)

tengas:

Public Sub PaqueteRecivido(Mensaje as string, WSK as Winsock)
  #3 (permalink)  
Antiguo 28/03/2007, 13:52
Avatar de culd  
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 20 años, 5 meses
Puntos: 19
Re: Problema con WINSOCK

Cita:
Iniciado por encore121 Ver Mensaje
has intentado ke en ves de ke WSK sea de tipo object lo pongas de tipo winsock???

es decir en ves de tener:

Public Sub PaqueteRecivido(Mensaje as string, WSK as object)

tengas:

Public Sub PaqueteRecivido(Mensaje as string, WSK as Winsock)
Acabo de probarlo y no anda.

Te juro que cuando lei tu mensaje crei que era la solución, pero directamente ni manda el paquete.

EDITO: Habia probado mal... ME ANDA PERFECTAMENTE, GRACIAS.

PD: Si alguien sabe como dan el fin a un paquete para separar de otro bienvenido sea... Prove con Chr(0) y nada.

Osea supongamos que mando dos paquetes seguidos..

WSK.SendData "HOLA"
WSK.SendData "CHAU"

El cliente recibe "HOLACHAU"... Como hago para que reciba en dos lineas de paquetes diferentes.

Gracias

Última edición por culd; 28/03/2007 a las 14:58
  #4 (permalink)  
Antiguo 28/03/2007, 17:16
 
Fecha de Ingreso: octubre-2006
Mensajes: 11
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: Problema con WINSOCK

Pues mira, por la forma en la ke trabaja el winsock no puedes enviar un dato tras otro ya ke no le da tiempo de saber donde termina uno y empieza otro, para hacer esto tienes dos opciones

1. enviar un pakete, esperar un tiempo y despues enviar el siguiente, unos 10 milisegundos bastaran

2. el siguiente es ke cuando recivas el dato en el evento DataArrival, regreses algun valor al ke te lo envio, supongamos esto:

En el cliente tendras esto:

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim datos As String
Winsock1.GetData datos
Text1.Text = Text1.Text & vbCrLf & datos
...
Proceso ke hagas aki
...
Winsock1.SendData "a"
End Sub

Y en el cliente tendras algo asi:

Private Sub Command2_Click()
Winsock1.SendData "HOLA"
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim a As String
Winsock1.GetData a
Winsock1.SendData "CHAU"
End Sub

asi cada vez ke el servidor reciva un dato le regresara algo al cliente, a este no le importa ke recive solo se hace esto para esperar a ke el servidor reciva lo ke se le envio antes

De ti depende ke metodo escojes cual se te acomoda mas a tus nescesidades
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:08.