Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: Jhonjhon_123 en Diciembre 30, 2009, 11:58:22 pm
-
Hola!
Bueno, la cosa es:
En un picturebox el cual al mover el mouse envia datos por winsock:
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Enviar X & "|" & Y, Index
End Sub
y la funccion "Enviar":
Public Function Enviar(Data As String, Index As Integer)
WS(Index).SendData Data & "//final//"
End Function
El problema es que el evento "al mover el mouse" susede muy rapido y envia igual
entonces si enviara "2|3//final//" normalmente, rapido me uniria dos coordenadas asi "2|3//final//2|3//final//" y bueno salta error.
Espero me allan entendido
Mi pregunta es:
Por que se da ese error??
Como lo soluciono??
Gracias
-
...
Es que eso que decis NO es un error, ni nada.. tenes que hacer algun sistemita que separe los pedidos 1x1 y que los parsee tambien 1x1, partiendolos con algun delimitador.
Saludos
-
hola esa forma te traera muchos incovenientes, te explico que pasa
vos envias 2|3//final// pero resulta que los datos no siempre llegan tal como vos los enviaste osea estos se van acumulando en el buffer del winsock, si lo probas en tu misma pc y va todo bien te puede llegar los datos de uno en uno pero cuando lo agas de forma remota te va a llegar asi 2|3//final//2|3//final// esto se puede solucionar con un simple split pero la cosa biene peor te puede llegar asi 2|3//final//2|3//fi y despues asi nal//2|3//final//2| y se desconchan todos los datos.
para este tipo de cosas lo mejor es pasar extructuras para ver mas sobre el tema click aca (http://www.recursosvisualbasic.com.ar/htm/listado-api/261-mandar-udt-en-winsock-con-copymemory.htm)
Te hice un ejemplo de como enviar las cordenadas del mouse y los estados de los botones del mouse. (yo use dos picutures despues vos adaptalo)
http://www.leandroascierto.com.ar/archivos/Winsock_mouse.zip
Saludos.
-
Gracias Leandro por el Ejemplo, lo boy a mirar!
-
Tengo el sig problema ahora, antes yo enviaba datos indefinidos, ocea:
con el type:
Nombre As String * 40
solo envia los primeros 40 caracteres, que pasa si son 2000 o mas caracteres como aqui:(http://www.multiupload.com/G5YJIZEORV).
Como defino una longitud indefinida??
-
Para esos caso creo que lo mejor es enviarlo como un array de bits, y bueno primero tendrias que enviar las dimenciones del array(tamaño) y luego que el server envie una respuesta de que ya tiene el tamaño y luego enviar el array, pero no todo de golpe sino por fragmentos de 1kb aproximadamente.
mirate el ejemplo de la webcam (http://www.leandroascierto.com.ar/categoria/Proyectos/articulo/Webcam%20via%20Socket.php)
saludos.
-
ya lo he resuelto, gracias!