#include #include #include #include #include #include void error(char *msg) { perror(msg); exit(1); } int main(int argc,char *argv[]) {int sockfd,newsockfd,portno,client,n; char buffer[256],c[2000]; struct sockaddr_in serv_addr,cli_addr; FILE *fd; if(argc<2) { fprintf(stderr,"error no port provided\n"); exit(1); } sockfd=socket(AF_INET,SOCK_STREAM,0); if(sockfd<0) error("error openin socket\n"); bzero((char *)&serv_addr,sizeof(serv_addr)); portno=atoi(argv[1]); serv_addr.sin_family=AF_INET; serv_addr.sin_port=INADDR_ANY; serv_addr.sin_port=htons(portno); if(bind(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr))<0) error("eror on binding"); listen(sockfd,5); client=sizeof(cli_addr); printf("server:waiting for client....\n"); newsockfd=accept(sockfd,(struct sockaddr*)&cli_addr,&client); if(newsockfd<0) error("error reading from socket"); printf("server:%s\n",buffer); n=read(newsockfd,buffer,255); if(n<0) error("error reading socket\n"); printf("server:%s\n",buffer); fd=freopen(buffer,"r",stdin) if(!fd) { perror(buffer); exit(EXIT_STATUS); } if(fd != NULL) { printf("server:%s found!\n transferring the contents :\n",buffer); if(fgets(c,2000,stdin)!=NULL); n=write(newsockfd,c,1999); if(n<0) error("error waiting to socket"); } else { printf("server:file not found\n"); n=write(newsockfd,"file not found!\n",15); if(n<0) error("error writing to socket"); } return 0; }