Ver Mensaje Individual
  #2 (permalink)  
Antiguo 01/06/2015, 07:19
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 11 meses
Puntos: 204
Respuesta: Aplicación cliente servidor dudas

Cita:
Iniciado por Demix Ver Mensaje
1) Apunto a que el servidor pueda mantener alrededor de 300 personas. ¿Es posible armar algo desde sockets en c++ capaz de procesar 300 usuarios conectados sin problemas?. Es decir, es factible o para ese tipo de cosas se requieren librerías especiales.
Depende de varios factores:

  1. Capacidad del servidor: Cuanto más potente sea el servidor, más usuarios admitirá
  2. Carga del servidor: Un usuario, por el simple hecho de estar conectado al servidor, añade una carga de trabajo al mismo. Cuanto más alta sea esta carga menos usuarios va a admitir tu servidor antes de saturarse.
  3. Lag: Dependiendo de la velocidad del juego, el tiempo de respuesta del servidor puede ser más o menos crítico... juegos con un tiempo de respuesta muy corto van a admitir menos jugadores.


Cita:
Iniciado por Demix Ver Mensaje
2) Es mejor utilizar sockets sincrónicos y armar un thread por cada uno o utilizar sockets asincronicos y procesar cada X milisegundos todo lo que llego en cada uno (por lo que tengo entendido el socket sincronico se cuelga y espera a que llegue toda la información y el asincronico devuelve solo lo que recibió hasta el momento)
Básicamente hay dos tipos de sockets:

  • TCP: En este tipo de socket toda la negociación corre por cuenta del equipo. Los mensajes no sólo no se pierden sino que además llegan ordenados y la conexión permanece abierta todo el tiempo.
  • UDP: Este socket posee una negociación mínima. La entrega de los mensajes no está garantizada, los mensajes pueden llegar desordenados y no existe el concepto de "conexión".


TCP ofrece un montón de garantías a costa del rendimiento. UDP, en cambio, te ofrece toda la libertad y velocidad disponible a cambio de tener que lidiar tú con la gestión de los paquetes.

Como ves, cada sistema tiene sus ventajas y sus inconvenientes, aunque yo creo que la mejor opción es usar UDP.

En cuanto a cómo procesar los paquetes... es algo que depende de la arquitectura que vayas a montar. Lo suyo sería ir procesando las cosas según llegan, de esa forma no limitas la velocidad de conexión (no te sirve de nada tener una conexión de 20Mb si la tasa máxima de tu servidor no alcanza los 2Mb por los delays que impones)

Cita:
Iniciado por Demix Ver Mensaje
3) Que libro de concurrencia (para no hacer quilombo con los thread) recomiendan?
Ahora mismo no se me ocurre ninguno... además no estoy en casa para consultar la biblioteca. Seguro que alguien acaba aportando algo en este apartado.

Un saludo.