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

#define PORT 1234
#define MAXSIZE 1000

main()
{

int listenfd, sockfd;
struct sockaddr_in servaddr;
char buff[MAXSIZE];
int conn_num;
char recved[MAXSIZE];

 if((listenfd = socket(AF_INET, SOCK_STREAM, 0))<0 )
    {
    perror("socket");
    exit(-1);
    }


memset(&servaddr,'\0',sizeof(servaddr));

 
 servaddr.sin_family = AF_INET;
 servaddr.sin_port = htons(PORT);
 servaddr.sin_addr.s_addr = INADDR_ANY;
 
 
 
 
if((bind(listenfd,(struct sockaddr*)&servaddr, sizeof(servaddr))) < 0)
    {
    perror("bind");
    exit(-1);
    }

if(listen(listenfd,conn_num) < 0)
    {
    perror("listen");
    exit(-1);
    }
    
    for(;;)
	{
	if((sockfd = accept(listenfd,(struct sockaddr*)NULL, NULL)) < 0)
	    {
	    perror("accept");
	    exit(-1);
	    }
	for(;;){
	memset(&recved,'\0',sizeof(recved));
	 read(sockfd,recved, sizeof(recved));
	 if(!strcmp(recved,"EOT"))
	    {
	    write(sockfd,"EOT",strlen("EOT"));
//	    close(sockfd);
//	    close(listenfd);
//	    exit(0);
	    printf("Recived EOT, shutting down");
	    break;
	    }
	snprintf(buff,sizeof(buff),"You sad %s\n",recved );
	write(sockfd, buff, strlen(buff));
	}
	printf("This is where i should go.");
	close(sockfd);
	}
	
    close(listenfd);
    exit(0);
}
