Hola! Che, por las preguntas suena como si estuvieras empezando con C. Justo
me acabo de acordar de que la página de sistemas operativos del FaMAF tiene
una buena cantidad de ejercicios y recursos sobre C, ademas de
recomendaciones sobre buenas practicas de programación. Por ahi si ves
alguno de los practicos te ayuda, algunos vienen con codigo ya hecho que
podes leer.
http://educa.di.unc.edu.ar/course/view.php?id=142
2008/3/7 Leonardo Rios <rios.lj@???>:
> Hola Gente, estoy implementando un simple chat tcp en c, mediante
> multi-threads (no-fork). El tema es el siguiente:
>
> * A cada cliente que se conecta al server (connect()) se crea 1 hilo.
> * 1 hilo por usuario
> * El server cada accept() que acepta se crea 1 hilo pthread_create.
> * Si defino como maximo #DEFINE MAX_TRHEADS 100 voy a tener #DEFINE USER
> 100.
>
> for (;;) {
>
> pthread_create();
>
> }
>
> Mi pregunta es la siguiente:
>
> - Se podria guardar los nombres de usuarios, cantidad de usuarios
> conectados, cantidad de usuarios des-logueados mediante estructuras de
> arreglos definidos en un archivo "pthread.h"
A ver si te entindo bien, esto se puede hacer:
-declarar 3 variables globales en un archivo ".h" (chat.h?):
char **sala;
unsigned int count_sala;
unsigned int stat_logouts;
pero no es lo que se diría una buena practica de programación. Ademas, en
todo caso los pones en el archivo del main()
-crear un tipo abstracto de datos(TAD) en un archivo "sala.h"
typedef struct sala_s * sala_t;
sala_t sala_adduser(sala_t s,char *username)
sala_t sala_logout(sala_t s,char *username)
y en otro archivo "sala.c":
struct {
char **conectados;
unsigned int count_sala;
unsigned int stat_logouts;
}
Esto te podría resultar más util porque resulta más escalable... podrías ver
lo que se propone en la pagina de sistemas operativos sobre TADs. Ademas, si
sacas esos proyectos, te vas a haber pegado un buen pedazo de introducción a
C.
Espero que te sirva, saludos,
Rafa
>
>
>
> PD: En mi fuente el cliente se conecta al servidor, pero he llegado a
> esta parte del pthre_create(), no he podido avanzar
>
>
>
>
> --
> /* Leonardo Rios
> * rios[dot]lj[at]gmail[dot]com
> */
> _______________________________________________
> Grulic-dev mailing list
> Grulic-dev@???
> https://mx.grulic.org.ar/mailman/listinfo/grulic-dev
>