SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: Pado en Sábado 8 de Diciembre de 2007, 16:45

Título: Problema En Chat (cliente/servidor) Con Sockets
Publicado por: Pado en Sábado 8 de Diciembre de 2007, 16:45
Hola,

He programado un chat en C bajo Linux, en el que consigo lo siguiente: los clientes se conectan al servidor, de manera que le mandan mensajes a este, y este los escribe en su terminal.
Bien, el servidor por cada cliente que se le conecta crea un hilo, y aparte en el principal hace los accepts.
Lo que me ocurre es que no se como puedo hacer para que el servidor, cada vez que recibe un mensaje, envie el mensaje a todos los clientes.

Si quereis para verlo mejor os puedo adjuntar el servidor.c y cliente.c

He leido mucho acerca de esto pero todavia sigo sin saber como hacerlo.

Gracias de antemo,

Jon
Título: Re: Problema En Chat (cliente/servidor) Con Sockets
Publicado por: JuanK en Sábado 8 de Diciembre de 2007, 17:16
Cita de: "Pado"
Lo que me ocurre es que no se como puedo hacer para que el servidor, cada vez que recibe un mensaje, envie el mensaje a todos los clientes.
 
Seg8u recuerdo puedes definir espcios de memoria compartida (variables o arrays por ejemplo) de tal forma que el servidor coloca cada mensaje recibido en una cola de despachos, esta cola debe ser supervisada de tal manera que cada vez que exista un mensaje este debe ser notificado a los clientes, lo cual a su vez implica que por cada cliente conectado debes mantener una referencia (apuntador.. o sea necesitas una lista de apuntadores con ferencia a cada socket que valla al cliente)a cada uno de los objetos del socket para asi poder hacer la difusion  de los mensajes a cada uno de ellos
Título: Re: Problema En Chat (cliente/servidor) Con Sockets
Publicado por: su - en Sábado 8 de Diciembre de 2007, 17:18
LinuxJournal "da la solucion" (la teorica al menos) (http://www.linuxjournal.com/article/9815)
Título: Re: Problema En Chat (cliente/servidor) Con Sockets
Publicado por: Pado en Sábado 8 de Diciembre de 2007, 19:54
Gracias por la ayuda, intentare hacerlo. De todas formas, ya que mi nivel de programacion es mas bien basico, agradeceria si pudieseis poner un ejemplo del servidor y cliente.

Muchas gracias,

Jon
Título: Re: Problema En Chat (cliente/servidor) Con Sockets
Publicado por: JuanK en Domingo 9 de Diciembre de 2007, 15:24
hace mucho no hagos sockets para esa plataforma, dentro de mis cosas el ejemplo que enconte es de hace tiempo y es un sevidor con duatro clientes en paralelo, el programa es algo asi como un sistema de archivos dsitribuido donde cada nodo envia un archivo al sistema y este distribuye partes de la informacion en los demas nodos, luego si cada cliente quiere recuperar el archivo entonces se envia una solicitud a los demas nodos para devolverle al cliente un arhivo unico....

el porgrama a nivel de odigo apesta, pero funciona.

Si te sirve una referencia mejor y con ejemplos, busca el libro

Programacion de Sockets Linux -- Walton

Tambien hay ejemplos de threads y de procesos hijo.
Título: Re: Problema En Chat (cliente/servidor) Con Sockets
Publicado por: Pado en Domingo 9 de Diciembre de 2007, 16:54
Muchas gracias por la respuesta. Mañana mismo si tengo tiempo me acercaré a alguna biblioteca para coger el libro.

Jon