Título: [DUDA C#] Pasar array por sockets Publicado por: Dryken en 28 Febrero 2013, 18:05 pm Estoy haciendo la v0.4 de mi juego de hundir la flota, la novedad es el modo online, por ahora va bien, he conseguido pasar cosas básicas como valores de variables pero me he quedado pillado en pasar el array de la posiciones de los barcos en el tablero lo cual no me deja por sockets.
Me preguntaba si habría otra forma por sockets de pasar un array. Tengo en mente otra solución más cutre...pasar todas las posiciones del array una a una pero el array tiene 6 filas y 8 columnas...no es plan pasar 48 variables de un tablero y 48 de otro. Título: Re: [DUDA C#] Pasar array por sockets Publicado por: TomaSs en 28 Febrero 2013, 20:19 pm Pues nunca lo he hecho, pero supongo que tendrás que hacerlo así, pasarlas de una en una o todas juntas con alguna marca de separación o algo así, supongo...
Al final que más dará sueltas que todas juntas, ya que si todas ocupan, por ejemplo, 20 bytes, tendrás que pasar 20 bytes si o si, separadas o juntas. No se, supongo... Título: Re: [DUDA C#] Pasar array por sockets Publicado por: Dryken en 28 Febrero 2013, 21:02 pm Hombre, por el tema de tamaño no es que me preocupe mucho, sino el tema de organizacion y limpieza, son 48 líneas más por clase si lo hago de forma chapuza, en total 96 más unas 4 por envío ya que al enviar y recibir hace falta cifrar y descifrar a ASCII por carácter, vamos que 4 x 48 x 2(clases) = 384 líneas más de código, no merece la pena.
A ver si existe una solución más simple que evite tanto código. Título: Re: [DUDA C#] Pasar array por sockets Publicado por: Novlucker en 28 Febrero 2013, 22:46 pm Lo que haces es serializar el array de un lado, y deserializar del otro :P
BinaryFormatter y array de bytes :P http://msdn.microsoft.com/es-uy/library/system.runtime.serialization.formatters.binary.binaryformatter(v=vs.80).aspx Saludos Título: Re: [DUDA C#] Pasar array por sockets Publicado por: Dryken en 28 Febrero 2013, 23:51 pm Gracias, desconocía este tema de serialización, no sabía ni que existiese. Investigo y aver que consigo :D
Título: Re: [DUDA C#] Pasar array por sockets Publicado por: TomaSs en 1 Marzo 2013, 03:47 am Pues cuando consigas algo interesante te agradecería que lo postearas, ya que me parece útil, y podrá venirme bién en un futuro.
Suerte ;) Título: Re: [DUDA C#] Pasar array por sockets Publicado por: kub0x en 1 Marzo 2013, 11:28 am Como te dijo NovLucker, la serialización es la respuesta. Aun me acuerdo cuando era novato y escribia al otro extremo un Array que contenía información de tipo int32, entonces en el otro lado lo que hacia era ir extrayendo la info del Array cada 4 posiciones, ya que un int32 en un Array de Bytes es representado en 4 bloques de Bytes xD. Bastante tedioso la verdad pero a la vez divertido.
Ya nos contarás que tal ha quedado la implementación, suerte. Saludos! Título: Re: [DUDA C#] Pasar array por sockets Publicado por: Dryken en 1 Marzo 2013, 21:14 pm TomaSs no te preocupes que si doy con la forma de conseguirlo lo compartiré por aquí pero por ahora no tengas mucha confianza en mi, llevo todo el día metiendole mano a este tema y no tengo forma de sacarlo.
kub0x que suerte que ya hayas pasado por este tipo de problemas, jaja lo que daría por estar en tu lugar, y esa solución que comentas, cuando no te queda otra hay que ir a por lo básico ;D Aver os cuento,...Esto de la serialización es peor de lo que pensaba aunque eso ya lo imaginaba de antes. Hasta ahora lo que he echo ha sido serializar un objeto y pasarlo a través de un networkstream. El caso es que creo que lo he conseguido pero en el momento que el cliente lo envia(serializa) y el server lo recibe(deserializa), el server se queda pillado, no reacciona pero el cliente si. Me he basado de este ejemplo Serializar Código
En el destino Deserializas el objeto: Código
----------------------------------------------------------------------------------------------------------------------- En este pequeño ejemplo se demuestra lo que quiero conseguir pero en el proyecto no me funciona :/ Código
Código
También he leido por ahí que existe una clase remoting que podría hacer algo similar, no se si ayudaría a conseguir pasar un array por sockets...mira que es difícil :-\ Título: Re: [DUDA C#] Pasar array por sockets Publicado por: Novlucker en 1 Marzo 2013, 21:16 pm Es muy fácil, más tarde te pego código ;) (bastante más tarde :xD)
Saludos Título: Re: [DUDA C#] Pasar array por sockets Publicado por: Novlucker en 2 Marzo 2013, 02:47 am Bueno, tal vez no te resulte tan fácil la implementación :xD
Servidor Código
Cliente Código
Lo he comentado, así que espero se entienda ;) Saludos Título: Re: [DUDA C#] Pasar array por sockets Publicado por: Dryken en 2 Marzo 2013, 19:31 pm Wow!!! Novlucker eres increible, menuda ayuda la tuya, muchísimas gracias ;-) ;-) ;-)
Seguro que me sirve. La implementación seguro que será complicada de por sí pero ya me las apañaré para que vaya como debe. No sabes cuanto te lo agradezco. Bueno, pues me pondré a por ello, ya os doy un toque cuando consiga tenerlo todo bien. A ver si tranquilamente de aquí a mañana hay avances. Saludos! :) |