#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<error.h>
#include<signal.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#include<pthread.h>
#include<ctype.h>
#define SRV_PORT 9999
int main()
{
int lfd,cfd,ret,i;
struct sockaddr_in srv_addr,clt_addr;
socklen_t clt_addr_len;
pid_t pid;
char buf[1024];
srv_addr.sin_family=AF_INET;
srv_addr.sin_port=htons(SRV_PORT);
srv_addr.sin_addr.s_addr=htonl(INADDR_ANY);
lfd=socket(AF_INET,SOCK_STREAM,0);
bind(lfd,(struct sockaddr *)&srv_addr,sizeof(srv_addr));
listen(lfd,128);
clt_addr_len=sizeof(clt_addr);
while(1)
{
cfd=accept(lfd,(struct sockaddr *)&clt_addr,&clt_addr_len);
pid=fork();
if(pid<0)
{
perror("fork");
}
else if(pid==0)
{
close(lfd);
break;
}
else
{
close(cfd);
}
if(pid==0)
{
while(1)
{
ret=read(cfd,buf,sizeof(buf));
if(ret==0)
{
close(cfd);
exit(1);
}
for(i=0;i<ret;i++)
{
buf[i]=toupper(buf[i]);
}
write(cfd,buf,ret);
write(STDOUT_FILENO,buf,ret);
}
}
}
return 0;
}