Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Aplicacion Cliente Servidor

Iniciado por lauri, 10 de Julio de 2006, 09:54:53 AM

« anterior - próximo »

zupervaca

Bueno no he seguido todo el hilo, pero aportare como hice el servidor de ewic, por lo menos de las cosas mas destacables.

- No use hilos diferentes en ningun momento para las conexiones.
- Las peticiones a bases de datos las hacia de forma asincrona, es decir, enviaba una peticion al servidor de la base de datos y no esperaba, la forma de identificar luego esa peticion al recibirla es mediante un id, puedes crear un guid si no quieres generar tu a pelo un identificador unico.
- Cada cliente tenia una cola de mensajes, es decir, tenia un bucle que trataba un mensaje de un cliente, se pasaba al siguiente cliente y vuelta a empezar, de esta manera evitas que si un cliente tiene un ancho de banda brutal solo se despachen sus mensajes o sature el servidor.
- Los mensajes entre cliente y servidor deben ser lo mas pequeños posibles, es decir, no se usan strings, se usan comandos como los bytecodes de java por ejemplo, un ejemplo:

cabecera:
2 byte - longitud de todo el paquete
x byte - paquete

prepaquete:
1 byte - tipo de dato (int, byte, short, string)

paquete int:
4 bytes - valor

paquete byte:
1 byte - valor

paquete short:
2 bytes - valor

paquete string:
4 bytes - longitud del string
x bytes - string (con o sin terminar en cero, depende de como se quiera hacer)

Un paquete enviado por el cliente:
2 bytes - longitud del paquete (20)
1 byte - tipo de dato (int)
4 bytes - valor del int
1 byte - tipo de dato (string)
4 bytes - longitud (10)
10 bytes - "Hola mundo"
...

Tambien si el paquete es muy grande y el servidor tiene un buen micro podrias dar la posibilidad de enviar paquetes comprimidos en formato zip, rar, etc.

Si no te gusta el sistema este de paquetes siempre podras enviar paquetes reconocidos, es decir, mediante un identificador unico saber que comando es y asi obtener los valores preestablecidos.
Asi por lo pronto es de las cosas que me acuerdo.

Diferencial

Hola a todos,
lauri si no te importa, pasame el trozo de codigo. Quiero probar como haces que se conecten el servirdor y el cliente etc...
PARA TENER COSAS QUE NUNCA HAS TENIDO, TENDRÁS QUE HACER COSAS QUE NUNCA HAS HECHO.

lauri

Buenos dias chicos,

Creo que  ya se conectan y se manda mensajes pero no con todos los equipos pero bueno supongo que eso ya sera cosa de los puertos , routers o a saber,porque a traves de la red con unos funciona y con otros no .

Entonces lo que es esto haciendo es con un hub conectar tres ordenas dos clientes y un servidor, entonces para que hablen entre si deben tener la misma mascara de subred?????  y ya valdria y con ello  tendrian que conectarse  al servidor independientemente de que los puertos , routers y demas esten capaos o lo que sea

Vamos que mi pregunta es que para que se conecten al servidor  cambio la mascara de subred y ya esta??? vamos que pongo todas las mascaras de subred iguales y se supone que deberia funcionar

gracias y un saludo

lauri

Hola otra vez,

y luego otra pequeña cosilla muy facilona , si tu conectas dos ordenas con un cable cruzado con la misma submascara de red, al hacer un ping de uno de ellos al otro  por narices tienes que conectarte porque a mi me dice que el tiempo de espera esta agotado

un saludo y gracias laura

Diferencial

yo no soy un experto de redes, pero tal como lo estas haciendo deberian de verse. Si yo fuera tu probaria el cable con otros ordenas podria ser que estubiera jodido el cable y si no haz tambien la prueba de enviarte pings a la misma maquina para saber si la tarjeta esta bien. Hace mucho que estudie eso y ya ni me acuerdo pero creo que por ahi van los tiros. Y otra cosa si los tienes conectado a un router no uses el cable cruzado.
PARA TENER COSAS QUE NUNCA HAS TENIDO, TENDRÁS QUE HACER COSAS QUE NUNCA HAS HECHO.

Diferencial

Sobre cambiar la mascara de subred al servidor como ejemplo:

Si tu servidor pongamos que tiene esta ip 192.168.10.1 y la mascara de subred es 255.255.255.0 la que marca la red es 192.168.10.*
El asterisco es la maquina por lo tanto si quieres comunicar las maquinas con el servidor deberia de configurar las maquinas con 192.168.10.* y el numero de maquina que quieras excepto la 255 y la 0 que estan reservadas para enviar mensajes a todo el mundo.
PARA TENER COSAS QUE NUNCA HAS TENIDO, TENDRÁS QUE HACER COSAS QUE NUNCA HAS HECHO.

lauri

de repente la informatica me esta resultando cosa de magia

mis mascaras de subred son  255.255.240.0  en todos los ordenas  que  quiero conectar y las ip son una mas que otra como muchos  es decir si una es 10.33.28.4 la otra es por ejemplo 10.33.28.7 vamos que estan todas bien para que se puedan conectar con un cable cruzado bien pues con uno de ellos se conecta y le envia su mensaje y con el otro no , entonces qeu es que el portatil que me han dejado esta roto?????

Diferencial

Pues prueba lo que te he dicho en el portatil, seguramente esta mal configurado o vete tu a saber, puede ser cualquier cosa.
PARA TENER COSAS QUE NUNCA HAS TENIDO, TENDRÁS QUE HACER COSAS QUE NUNCA HAS HECHO.

Marci

Cita de: "lauri"y luego otra pequeña cosilla muy facilona , si tu conectas dos ordenas con un cable cruzado con la misma submascara de red, al hacer un ping de uno de ellos al otro  por narices tienes que conectarte porque a mi me dice que el tiempo de espera esta agotado

Si al hacer el ping te indica tiempo de espera agotado es que los ordenadores no se estan "viendo".

1. Prueba a ejecutar el comando ipconfig /all en un ordenador. Te va a indicar la ip que tiene asignada el ordenador, la mascara de subred y la puerta de enlace. Asi ya ves si estan correctos o tienes conflictos

2. Haces ping a la tarjeta de red (a la direccion ip que te da el comando anterior). Tiene que darte paquetes enviados 4 y recibidos 4

3. Repites lo mismo en el otro ordenador

4. Haces ping de un ordenador a otro.

lauri

Hola que tal  :lol: , oye se os ocurre alguna forma en la que pueda probar mi aplicacion cliente servidor sin necesidad de conectarme a otros ordenas, es decir haciendo yo de servidor y de muchos clientes

bnl

Mediante maquinas virtuales.

Yo he utilizado el VMWare. Está de puta madre
Hace poco M$ sacó una gratuita.
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

TheAzazel

Si, ejecuta un servidor y luego tantos clientes como desees en tu misma maquina.

Esto es una forma de depurar problemas "gordos" rapidamente pero para poner a prueba finalmente el sistema... lo suyo es probarlo en una red local de 100Mbit, luego de 10Mbit y finalmente por Inet por el tema de las latencias, errores y demas y asi ves como se comportan tanto el servidor como el cliente.

Desconozco si existe algun soft para emular estos problemas ejecutando todo en tu misma maquina...

TheAzazel

Cita de: "bnl"Mediante maquinas virtuales.

Yo he utilizado el VMWare. Está de puta madre
Hace poco M$ sacó una gratuita.

que latencia de da la conexion con una maquina virtual? emula algo o lo hace a todo pastilla?

bnl

No se decirte, pero deberia ser similar a una máquina real. Habia varias formas de realizar la configuracion de la red.

En una empresa me enmarronaron porque la MV era visible desde otras máquinas como si fuera una mas de la red. Se pueden configurar para que no la vean.

Sobre la MV de MS:

http://elguille.info/sistema/maquinas_virtuales.htm
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

lauri

Gracias por la respuesta, ahora estoy un poco  mas liada :wink: , pero bueno haber si el finde se me aclaran las ideas

un saludo laura






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.