Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





mmm datos de mas al recibirlos...

Iniciado por superbalgas, 14 de Febrero de 2011, 09:36:35 PM

« anterior - próximo »

superbalgas

Hola, estoy realizando un game 2D, en VB .NET

y we... la onda es hacerlo online...

para hacer esto de la conexiones pensé en utilizar un sistema como el del CHAT...

y... busque en la web algo de sockets y me topé con este código, q de seguro muchos de ustedes lo conocerán xD

http://www.elguille.info/colabora/puntoNET/PabloTilli_SocketsVBNET.htm

bueno... la onda es que el cliente detecte cuando el personaje se mueve y envie las coordenadas del mismo, como si fuera un texto... x ejemplo... 125*500 y el servidor recibe el dato y lo reenvia a los demás clientes...

hasta ahí todo bien con mi idea xD... y la puse a implementar...

pero pasó algo raro q no esperaba xD...

primero, cuando el cliente enviaba rapidamente 2 o más actualizaciones de la coordenada al servidor...

al servidor le llegaba todos los string como si fuera 1 solo... ejemplo... envio 125-125 dsp 126-125 dsp... 127-125 .. y el servidor lo recibe así.... 125-125126-125127-125 lo cual yo dije WTF? xD... si son 2 paquetes diferentes... seguro me lo está metiendo todo en uno solo u.u

y bueno, entonces eso lo solucioné de la siguiente manera... hice q en vez de q mandara 125-125, q mande ... 125-125][ , Sip... con ][ al final... y en el servidor hacia un split y usaba la ultima coordenada... osea la ultima actualización...

y dsp noté q no solo me lo hacia de cliente a servidor... si no tambien de servidor a cliente, por lo q tuve q hacerlo mismo como dividir datos..

peeeeeerooo... eso no fué nada, y ahora descubri q al final de cada string me pone unos caracteres raros q no se q son... puede q sea una especie de salto de linea... pero ni idea, no se como averiguar q me esta enviando ahí xD... meti el string en un msgbox() para saber q caracter me pone al final... y no sale nada xD

asi q... me pudrí y decidi volver a dar unos pasos atras y cortar todo de raiz xD

¿como evito q me meta todo en un paquete al enviar?



Salu2! :P

valnar

Sería más sencillo si copiases tu código aquí, no entiendo muy bien tu problema (no sé muy bien que quieres decir con dsp, etc, etc...), pero si pones el código seguro que te puedo comentar algo.
Valnar Games
All your base are belong to us.
@valnar

superbalgas

este es el codigo base... q puse en el anterior post :P

http://www.elguille.info/colabora/puntoNET/PabloTilli_SocketsVBNET.htm

esa serian 2 dll q una hace de server y otra de cliente...


valnar

Es decir, ¿has copiado y pegado ese código?
Valnar Games
All your base are belong to us.
@valnar

superbalgas

sep, eso seria lo q hace la conexión, enviar y recibir datos...

compilé las clases como dll y las importe a mi juego... y llamo las funciones como si fuera un chat

q envia las coordenadas...

pero el problema es el q puse arriba...

superbalgas


valnar

Quizás sería lo lógico poner el código en el que has implementado esas llamadas a los métodos de las librerías.

Pero así, echando un primer vistazo al código del servidor y del cliente, veo que al recibir datos se reciben en un array de 100 bytes (BufferDeLectura = New Byte(100)). No sé si al recibir esos datos muy seguidos, el stream recoge todo lo que hay en el buffer (aunque sea de varios mensajes). Puedes probar a modificar ese valor ajustándolo a lo que tu mandas, o mandar directamente un Byte(100) poniéndole unicamente el texto que quieras (lo cual sería un poco ilógico porque el paquete sería más pesado).

Pero bueno, eso lo he pensado echando un vistazo rápido...quizás alguien más te pueda decir algo...
Valnar Games
All your base are belong to us.
@valnar

superbalgas

#7
simple,,,

For I As Integer = 0 To dimencion
               Dim CoorSalida As String
               Try
                   CoorSalida = Coordenadas(I)
               Catch ex As Exception
                   CoorSalida = "0-0"
               End Try
               txtMensaje.AppendText(vbNewLine & "Enviando Coordenada " & CoorSalida & " de ID " & I & " a ID " & UBound(ID_PJ))
               WinSockServer.EnviarDatos(IDTerminal, I & "*" & CoorSalida & "*" & UBound(ID_PJ) & "*NOMBRE][")
           Next

valnar

Valnar Games
All your base are belong to us.
@valnar

superbalgas


valnar

En cualquier caso, para ver algún problema (si lo hubiera), el tema sería ver el cómo se recogen los datos, no cómo se envían...

¿Has probado a cambiar algo del Byte(100)?.
Valnar Games
All your base are belong to us.
@valnar






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.