Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[Sockets] Conectar 2 clientes

Estas en el tema de [Sockets] Conectar 2 clientes en el foro de C/C++ en Foros del Web. Hola! Resulta que estoy desarrollando un sistema servidor/clientes, y querría saber como hacer para que cuando hubiera mas de un cliente conectado, el servidor le ...
  #1 (permalink)  
Antiguo 20/06/2014, 10:42
 
Fecha de Ingreso: junio-2014
Mensajes: 8
Antigüedad: 9 años, 10 meses
Puntos: 0
[Sockets] Conectar 2 clientes

Hola!

Resulta que estoy desarrollando un sistema servidor/clientes,
y querría saber como hacer para que cuando hubiera mas de un
cliente conectado, el servidor le pasara la info a todos los clientes
de los demas clientes, y se pudiera comunicar entre ellos.

El problema esta en que yo he abierto en mi ordenador un puerto
para que los clientes se conecten, pero no puedo abrir puertos de
los CLIENTES, logicamente, y la cosa es que nose a que puerto
conectarme entonces de cliente a cliente. :S

Saluditos :)
  #2 (permalink)  
Antiguo 20/06/2014, 15:19
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: [Sockets] Conectar 2 clientes

Cuando el server recibe las conexiones, al accept()-ar, recibe el handle de la conexion con la que él puede escribir hacia el cliente, y tambien podría hacer las veces de proxy, escuchando por un lado y repartiendo al resto de los clientes.

Resumen: Que guarde lo que recibe al accept()-ar y luego lo utilice para reproducir a los demás lo que recibe por cualquiera de ellos.
__________________
Visita mi perfil en LinkedIn
  #3 (permalink)  
Antiguo 21/06/2014, 15:20
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 3 meses
Puntos: 35
Respuesta: [Sockets] Conectar 2 clientes

Tenes que usar threads, vas lanzando uno por cada cliente que se conecta. Despues si Cliente1 envía algo al servidor, éste se encarga de comunicarselo a Cliente2 y Cliente3. Aunque este metodo es muy primitivo, hay muchas librerias y frameworks que se encargan de manejar todo esto.

  #4 (permalink)  
Antiguo 21/06/2014, 15:44
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 8 meses
Puntos: 83
Respuesta: [Sockets] Conectar 2 clientes

O tambien si estas en windows puedes usar las funciones de notificacion asincrona, te ahorran los threads y la carga que supone cuando hay muchas conexiones, y te permiten actuar sobre cada socket de forma independiente pero no de forma adyacente (te ahorra los threads pero sigues necesitando una lista de datos de cada cliente). No se seguro si lo equivalente en linux de notificaciones asincronas se hace con forks (o algo asi, lo digo de haberlo visto de pasada), es cuestion de echarle un vistazo.

Me arriesgo a suponer que estas intentando hacer algun tipo de irc, seguramente en google o donde quieras buscar encontraras mas de un ejemplo que te servirá de guia.

Hace algun tiempo desarrollé tambien mi version de esto, bajo windows y con threads, y no te digo que fuera mal, es mas, estuve contento con el resultado pero tal como te comenta @carbon es algo primitivo.

Saludos
vosk
  #5 (permalink)  
Antiguo 22/06/2014, 10:36
 
Fecha de Ingreso: junio-2014
Mensajes: 8
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: [Sockets] Conectar 2 clientes

Hola!

Gracias por las respuestas chicos, os explico:

- Como CalgaryCorpus i carbon habeis dicho, lo qe se ha de hacer es qe el servidor reparta lo que le llega de el Cliente X con los otros clientes, pero la cosa es que eso YA lo hace mi servidor. Pero el problema de eso, es que si muchos clientes envian info a la vez al servidor, cuando el servidor le envia todo a cualquiera de los clientes, estos no pueden administrar tanta información desde un solo thread (el que tienen para el servidor).
Lo que yo quería era que el servidor solo fuera un enlace al entrar en el sistema, y que los clientes se hablaran directamente entre si, para que entonces tuviera N threads con una conexión cada uno, siento N el numero de clientes. De esta forma, el cliente no tiene que administrar tanta info de golpe desde un solo socket.

En fin, la cosa es que me gustaría saber una forma de conectar los clientes, pero es una pesadilla por el tema de las Ips y los puertos.
Sigo esperando ayuda :)

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:20.