Documentos de Académico
Documentos de Profesional
Documentos de Cultura
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <pthread.h>
#include <errno.h>
//#include <conio.h>
pthread_t hilo_cliente1;
pthread_t hilo_cliente2;
pthread_t hilo_cliente3;
pthread_t hilo_servidor;
int valor_hilo;
//******************** creamos el socket....
//******************** los argumentos son los siguientes:
//******************** AF_INET familia de direcciones
//******************** SOCK_STREAM tipo de socket
//******************** 0 es el protocolo que se determina por los otros argumentos
//******************** anteriores(TCP)
sock_servidor = socket(AF_INET, SOCK_STREAM, 0);
if (sock_servidor < 0)
error("No se pudo crear el socket =/ \n");
pthread_join(hilo_cliente1, NULL);
pthread_join(hilo_cliente2, NULL);
pthread_join(hilo_cliente3, NULL);
pthread_join(hilo_servidor, NULL);
// y cerramos los sockets...?*/
close(sock_cliente);
close(sock_servidor);
exit(0);
}
if (sock_cliente < 0)
{ error("No se puede aceptar el enlace!\n");
exit(0);
}
if (n < 0)
{ error("No se puede obtener nombre del cliente!\n");
exit(0);
}
//********************
bzero(buffer,256);
usuario=0;
//****** si se coencto algun cliente sale del ciclo
while(usuario!=1)
{
bzero(buffer,256);
//printf("%s",buffer);
if (n < 0)
{ error("No se puede enviar mensaje de confirmación =(\n");
exit(0);
}
//******************** se valida el login del cliente
//******************** login validos : cliente1 , cliente2 , cliente3
//******************** envia por lineas (max 255 caractres) el mensaje el archivo memo
correspondiente cliente
if((0==strcmp(buffer,"cliente1\n")))
{
usuario=1;
archivo=fopen("/home/memo1.txt","r");
//******************** envia por lineas (max 255 caractres) el mensaje el archivo memo
correspondiente cliente
while(!feof(archivo))
{
fgets(linea, 255, archivo);
n = write(sock_cliente,linea,255);
n = read(sock_cliente,linea,2);
}
n = write(sock_cliente,"ok",2);
fclose(archivo);
}
if((0==strcmp(buffer,"cliente2\n")))
{
usuario=1;
archivo=fopen("/home/memo2.txt","r");
//******************** envia por lineas (max 255 caractres) el mensaje el archivo memo
correspondiente cliente
while(!feof(archivo))
{
fgets(linea, 255, archivo);
n = write(sock_cliente,linea,255);
n = read(sock_cliente,linea,2);
}
n = write(sock_cliente,"ok",2);
fclose(archivo);
}
if((0==strcmp(buffer,"cliente3\n")))
{
usuario=1;
archivo=fopen("/home/memo3.txt","r");
//******************** envia por lineas (max 255 caractres) el mensaje el archivo memo
correspondiente cliente
while(!feof(archivo))
{
fgets(linea, 255, archivo);
n = write(sock_cliente,linea,255);
n = read(sock_cliente,linea,2);
}
n = write(sock_cliente,"ok",2);
fclose(archivo);
}
}
//*** despliega una interfaz para el servidor
void hilo_menu(void *arg)
{
char *opcion;
int salir=0;
char linea[256];
FILE *archivo_memos;
while(salir!=1)
{
Resultado: