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

Chat en anjuta

Estas en el tema de Chat en anjuta en el foro de C/C++ en Foros del Web. Os comento, estamos intentando hacer un chat en C mediante el compilador Anjuta. La cuestión es que vamos a crear varios chat, el primero mediante ...
  #1 (permalink)  
Antiguo 13/02/2008, 21:19
 
Fecha de Ingreso: febrero-2008
Mensajes: 18
Antigüedad: 16 años, 3 meses
Puntos: 0
Chat en anjuta

Os comento, estamos intentando hacer un chat en C mediante el compilador Anjuta. La cuestión es que vamos a crear varios chat, el primero mediante memoria compartida, el segundo mediante cola de mensajes y por ultimo otro con socket.

Ahora estoy con el de cola de mensajes, y la pregunta es como podría configura la ventana para tener un apartado donde escribir y otro donde se vayan mostrando los mensajes.

Un saludo y gracias
  #2 (permalink)  
Antiguo 14/02/2008, 02:36
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 4 meses
Puntos: 606
Re: Chat en anjuta

En que sistema operativo? Si es en Linux/Unix tienes la libreria NCurses, por ejemplo.
  #3 (permalink)  
Antiguo 14/02/2008, 07:20
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 11 meses
Puntos: 28
Re: Chat en anjuta

@slhas : ¿Lo harás en consola o usando las X's?

@Malenko : es bastante claro que la aplicación es para linux, no hay versión de Anjuta para win a menos que la emules o algo así

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #4 (permalink)  
Antiguo 14/02/2008, 10:10
 
Fecha de Ingreso: febrero-2008
Mensajes: 18
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Chat en anjuta

Lo estamos haciendo en Linux.

@Lucifer: Nosotros programamos bajo linux mediante el entorno de anjuta. No utilizamos ninguna aplicación más, todo el codigo es introducido a mano.

Yo estoy en casa enredando un poco con Glade, pero creo que eso ya es un poco mas complejo.

Gracias
  #5 (permalink)  
Antiguo 14/02/2008, 12:46
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 11 meses
Puntos: 28
Re: Chat en anjuta

Cuando digo las X's me refiero a que si usas ventanitas o si tu programa se ejecuta desde la consola.

Si lo haces desde la consola NCurses es la opción, si lo haces usando las X's tienes muchas opciones (wxWidgets, Gtk, Gtk+, Qt).

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #6 (permalink)  
Antiguo 14/02/2008, 18:21
 
Fecha de Ingreso: febrero-2008
Mensajes: 18
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Chat en anjuta

@lucifer: Muchas gracias por todo. Pues en principio no conocia la existencia de la libreria Ncurses, ahora buscaré un poco de informacioń a ver si me puedo apañar con ella.

De lo que me he dado cuenta es de que glade trabaja con Gtk, y no tengo mucho tiempo, ya que antes de semana santa terminamos, y todavía nos queda por dar socket, que comenzaremos la semana que viene.

Lo que está claro es que con Glade queda un entorno mucho más chulo que con las consolas.

Si me aconsejais en algo os lo agradecería mucho....

Saludos

Última edición por slhas; 14/02/2008 a las 19:25
  #7 (permalink)  
Antiguo 16/02/2008, 07:37
 
Fecha de Ingreso: febrero-2008
Mensajes: 18
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Chat en anjuta

Alguna sugerencia con la librería Ncurses...

Saludos
  #8 (permalink)  
Antiguo 19/02/2008, 20:00
 
Fecha de Ingreso: febrero-2008
Mensajes: 18
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Chat en anjuta

Al final estoy intentando hacer el chat usando glade, y necesito saber como gestionar mediante un hijo un label de una ventana en gtk. Es decir, como puedo hacer un fork en gtk.

Saludos, y cualquier ayuda os la agradecería mucho
  #9 (permalink)  
Antiguo 20/02/2008, 00:26
 
Fecha de Ingreso: febrero-2008
Mensajes: 18
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Chat en anjuta

Necesito ayuda por favor...

Por lo que he podido encontrar, no lo puedo hacer mediante un fork, ya que el fork lo que hace es duplicar, y lo que yo pretendo es compartir una ventana.

La ventana consta con un campo de entrada, la cual al pulsar un botón me guardaría el mensaje en la cola que tiene compartidad con el servidor junto con los demás usuarios, y por otro lado tengo una etiqueta(label), en la cual se deben ir mostrando tanto sus mensajes como los de los demás usuarios.

Por lo que he podido encontrar, la solución sería hacerlo mediante hilos(thread). Tendría que crear un hilo que me entrara en un bucle infinito y me fuera mostrando todos los mensajes que le vengan del servidor hasta que el usuario cierre la sesión, pero no se como hacerlo...

Cualquier ayuda o consejo os lo agradecería muchísimo, gracias
  #10 (permalink)  
Antiguo 20/02/2008, 10:45
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 11 meses
Puntos: 28
Re: Chat en anjuta

Aquí hay una buena explicación y tutorial acerca de pthreads y como usarlos. En esta otra página tienes la documentación de la API.

En esta hay un tutorial en castellano con ejemplos.

Necesitas un hilo que se encargue de leer los mensajes del servidor, el envío no necesita ser en otro hilo a menos que vallas a transmitir un texto demasiado extenso (lo creo poco probable).

Cuando el hilo de recepción lea algo debe enviar los mensajes correctos a la aplicación para que esta actualice el label que mencionas.

Ten especial cuidado en como le envías los mensajes del servidor a los clientes porque probablemente necesites sincronizar muy bien todo para que no se te "empastele" todo.

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #11 (permalink)  
Antiguo 20/02/2008, 16:38
 
Fecha de Ingreso: febrero-2008
Mensajes: 18
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Chat en anjuta

Muchas gracias por todo, de momento tengo para empezar a hacer algunas cosillas. A ver que es lo que sale...

Saludos
  #12 (permalink)  
Antiguo 20/02/2008, 18:40
 
Fecha de Ingreso: febrero-2008
Mensajes: 18
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Chat en anjuta

Ya tengo creado el hilo, el problema es que no se como hacer un "gtk_label_set_text(label2,"aaaa")" desde el hilo.
  #13 (permalink)  
Antiguo 20/02/2008, 21:04
 
Fecha de Ingreso: febrero-2008
Mensajes: 18
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Chat en anjuta

@_Lucifer_: A base de no dormir y probar por una cosa y otra ya he conseguido escribir en el label desde el hilo que he creado. Ahora me surge otro problema. Como te comenté, este hilo lo quiero utilizar para que se vayan poniendo los mensajes del servidor, pero el problema es que no se como quedar al hilo en una especie de bucle infinito de manera que no deje de coger mensajes y de escribirlos, ya que de este modo solo consigo que me lo escriba una vez.

Saludos y gracias por todo
  #14 (permalink)  
Antiguo 21/02/2008, 07:49
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 11 meses
Puntos: 28
Re: Chat en anjuta

Con un do-while lo resuelves...
Código:
...
do
{
   if(LeerMensaje(mensaje))
      MostrarMensaje(mensaje);
   // Podrías hacer una pausa entre lecturas
}
while(seguirLeyendo == 1);
...
Esa es solo una forma de hacerlo. Podrías tambien usar un timer y leer cada cierto tiempo de la cola, también podrías usar alguna clase de "notificador" que le avise a cada cliente cuando algo cambie.

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #15 (permalink)  
Antiguo 21/02/2008, 08:15
 
Fecha de Ingreso: febrero-2008
Mensajes: 18
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Chat en anjuta

Bueno, así más o menos lo podría solucionar. El problema ahora es que el servidor tiene una cola compartida con todos los clientes, y luego cada cliente tiene otra exclusiva con el server, y cuando intento poner un mensaje en la cola del cliente(cola creada por dicho cliente) desde el servidor, no la pone, como si no la viera...

Un saludo
  #16 (permalink)  
Antiguo 21/02/2008, 09:35
 
Fecha de Ingreso: febrero-2008
Mensajes: 18
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Chat en anjuta

Como puedo hacer para que un scrolledwindow siempre esté al final? Es para que se vayan viendo los mensajes que se van escribiendo, para no tener que ir bajando la barra de desplazamiento.

Saludos y gracias
  #17 (permalink)  
Antiguo 23/02/2008, 08:30
 
Fecha de Ingreso: febrero-2008
Mensajes: 18
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Chat en anjuta

@_Lucifer_: Necesito saber como un scrolledwindows se situa siempre al final, y como ocultar una ventana.

Muchas gracias, saludos
  #18 (permalink)  
Antiguo 25/02/2008, 20:22
 
Fecha de Ingreso: febrero-2008
Mensajes: 18
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Chat en anjuta

Por favor necesito saber como un scrolledwindows se situa siempre al final, y como debo hacer para ocultar una ventana en gtk.

Muchas gracias
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 23:15.