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?
(http://img18.imageshack.us/img18/5877/dibujojzr.jpg)
Salu2! :P
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.
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...
Es decir, ¿has copiado y pegado ese código?
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...
dsp= despues
etc = etcétera
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...
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
mmm...¿EnviarDatos2?
sorry sin 2 :P error de tipeo xD
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)?.