estudiante
servidor-chat.c
/*
*
Servidor de chat mínimo
*
JAMJ - Enero 2006
*
*/
#include
#include
#include
#include
#define
#define
#define
#defineUSUARIOS
PORT
BACKLOG
TAM_BUFFER
10
3550
2
2000
/* Número de usuarios concurrentes */
/* El puerto que será abierto */
/* El número de conexiones permitidas */
int fd1;
/*Descriptor del servidor */
struct sockaddr_in servidor, cliente[USUARIOS]; /* Información del servidor y clientes */
int size;
/* Para tamaño de sockaddr_in */
int fd[USUARIOS];
pthread_t h[USUARIOS];char buffer[USUARIOS][TAM_BUFFER];
int i;
/* Descriptores de los clientes */
void *usuario (int id);
main()
{
/* Información del servidor en sockaddr_in */
servidor.sin_family = AF_INET;servidor.sin_port = htons(PORT);
/* Es necesario utilizar htons */
servidor.sin_addr.s_addr = inet_addr(INADDR_ANY); /* INADDR_ANY coloca nuestra dirección IP
automáticamente */bzero(&(servidor.sin_zero),8);
/* Escribimos ceros en el resto de la estructura */
/* socket() */
if ((fd1=socket(AF_INET, SOCK_STREAM, 0)) == -1 ) {
printf("error en socket()\n");
exit(-1);
}
/* bind() */if(bind(fd1,(struct sockaddr *)&servidor, sizeof(struct sockaddr))==-1) {
printf("error en bind() \n");
exit(-1);
}
/* listen() */
if(listen(fd1,BACKLOG) == -1) {
printf("error en listen()\n");exit(-1);
}
/* Inicializamos descriptores */
for (i=0; ih_addr pasa la información de ``*he''
a "h_addr" */
bzero(&(servidor.sin_zero),8);
/* Escribimos ceros en el resto de la estructura *//* socket() */
if ((fd=socket(AF_INET, SOCK_STREAM, 0))==-1){
printf("socket() error\n");
exit(-1);
}
/* connect() */
if(connect(fd, (struct sockaddr *)&servidor, sizeof(struct sockaddr))==-1){printf("connect() error\n");
exit(-1);
}
pthread_create (&rec, NULL, recibir, NULL);
pthread_create (&env, NULL, enviar, NULL);
pthread_join (rec, NULL);
pthread_join (env, NULL);
close(fd);...
Regístrate para leer el documento completo.