#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <string.h>

#define PUERTO 55555

main()
{
int SocketDescriptor, ConnectionSocket;
int nread;
int iOption='0';

struct sockaddr_in ser_addr;
char msg[100];
printf("Comenzando la comunicacion Server...\n");
if ((SocketDescriptor = socket(AF_INET,SOCK_STREAM,0)) < 0)
{
	perror("error en la creacion del socket");
	exit(1);
}

ser_addr.sin_family = AF_INET;
ser_addr.sin_addr.s_addr = htonl(INADDR_ANY);
ser_addr.sin_port = htons(PUERTO);

if (bind(SocketDescriptor,(struct sockaddr*)&ser_addr,sizeof(ser_addr)) < 0)
{
	perror("error al crear la conexion");
	exit(1);
}
listen(SocketDescriptor,5);

	ConnectionSocket = accept(SocketDescriptor,(struct sockaddr*)0,(int*)0);
do
{
	memset(&msg,0,sizeof(msg));		
	nread = read(ConnectionSocket,&msg,sizeof(msg));
	if (nread > 0)
		printf("Mensaje recibido: %s\n",msg);
	
	printf("(SERVER) Mensaje a enviar:");
	fgets(msg,100,stdin);
	
	printf("enviando mensaje...\n");
        iOption='1';	
	if(write(ConnectionSocket,&msg, sizeof(msg)) <= 0)
	{
		printf("Error al enviar el mensaje\n");
		exit(1);
	}
	printf("ok\n");

} while (iOption != '0');

close(ConnectionSocket);
close(SocketDescriptor);
printf("fin de la transmision");
exit(1);

}
	

