Autor Tema: WINSOCK PROBLEM  (Leído 2893 veces)

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

pepino

  • Bytes
  • *
  • Mensajes: 45
  • Reputación: +0/-4
    • Ver Perfil
WINSOCK PROBLEM
« en: Julio 17, 2014, 01:24:18 am »
hola que tal tengo un problema bastante extraño y no le encuentro solución. tengo este codigo.
Me.Server(Index).SendData "ACTIVAR"

pero el cliente de ninguna forma lo recive
en cambio si hago esto:
msgbox index
Me.Server(Index).SendData "ACTIVAR"

al darle aceptar al msgbox funciona de maravilla...alguien tiene una explicación para esto.

LeandroA

  • Administrador
  • Petabyte
  • *****
  • Mensajes: 1128
  • Reputación: +151/-8
    • Ver Perfil
Re:WINSOCK PROBLEM
« Respuesta #1 en: Julio 17, 2014, 08:24:18 am »
Hola pepino, es porque seguramente estas enviando dos datos seguidos y cuando pones un msgbox creas una pausa.
te doy un ejemplo de algo que es lo que comúnmente suele suceder.

si envias:

.SendData "Hola"
.SendData "Mundo"

es muy probables que nunca te lleguen por separados, sobretodo cuando es una conexión  en una red mas lenta. te llegaría "holamundo" todo junto, entonces lo que tenes que hacer es crear un protocolo, osea una conversación entre cliente y servidor, es decir el cliente primero envía "Hola" cuando llega hora el servidor envía un "Ok" luego el cliente envía "Mundo", y eso te da una pauta que todo llega bien. (también hay otras formas)

pero bueno, si en tu caso son dos simples "lineas/comandos" podes meter una pausa de por medio, y con eso en una red lan la podes safar.

Ejemplo hacer una pausa con el api sleep

Código: [Seleccionar]
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)

.SendData "Hola"
Doevents
Sleep 1000 'un segundo
.SendData "Mundo"

pero bueno esto ultimo no es un 100% de garantía, si el servidor esta muy colapsado los datos se podrían a llegar a juntar.

pepino

  • Bytes
  • *
  • Mensajes: 45
  • Reputación: +0/-4
    • Ver Perfil
Re:WINSOCK PROBLEM
« Respuesta #2 en: Julio 17, 2014, 10:32:56 pm »
Hola pepino, es porque seguramente estas enviando dos datos seguidos y cuando pones un msgbox creas una pausa.
te doy un ejemplo de algo que es lo que comúnmente suele suceder.

si envias:

.SendData "Hola"
.SendData "Mundo"

es muy probables que nunca te lleguen por separados, sobretodo cuando es una conexión  en una red mas lenta. te llegaría "holamundo" todo junto, entonces lo que tenes que hacer es crear un protocolo, osea una conversación entre cliente y servidor, es decir el cliente primero envía "Hola" cuando llega hora el servidor envía un "Ok" luego el cliente envía "Mundo", y eso te da una pauta que todo llega bien. (también hay otras formas)

pero bueno, si en tu caso son dos simples "lineas/comandos" podes meter una pausa de por medio, y con eso en una red lan la podes safar.

Ejemplo hacer una pausa con el api sleep

Código: [Seleccionar]
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)

.SendData "Hola"
Doevents
Sleep 1000 'un segundo
.SendData "Mundo"

pero bueno esto ultimo no es un 100% de garantía, si el servidor esta muy colapsado los datos se podrían a llegar a juntar.



ni así funciona ya verifique todo y solo manda los datos una ves, la segunda ya no funciona, si puedes conectarte por skype y te mando el proyecto.

coco

  • Administrador
  • Terabyte
  • *****
  • Mensajes: 548
  • Reputación: +63/-3
    • Ver Perfil
Re:WINSOCK PROBLEM
« Respuesta #3 en: Julio 17, 2014, 10:59:24 pm »
hola, creo que hay un detalle seguramente en tu codigo.

que tipo de conexion usas? el "cliente" se conecta al "server" ? o el server al cliente?

en el caso de que el server se conecte al cliente, tenes que enviar datos luego que aparezca el evento "Connected" o OnConnect (no recuerdo el nombre).
en el otro caso (el cliente se conecta al server), tenes que enviar datos luego de aceptar la conexion entrante.
'-     coco
(No me cabe: Java, Python ni Pascal)
SQLite - PIC 16F y 18F - ARM STM32 - ESP32 - Linux Embebido - VB6 - Electronica - Sonido y Ambientacion