Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 2

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

h> #define MAX 1000 #define PORT 34567 struct Request { char method[10]; char file[10]; char data[1000]; char username[20]; char password[20]; }; struct Response { char data[1000]; }; int main() { int sockfd,connfd,length; struct sockaddr_in server,client; struct Request req; struct Response res; char us[20]="priya"; char ps[20]="3569"; sockfd=socket(AF_INET,SOCK_STREAM,0); if(sockfd==-1) { printf("socket creation failed...\n"); exit(0); } else printf("Socket successfully created..\n"); bzero(&server,sizeof(server)); server.sin_family=AF_INET; server.sin_addr.s_addr=htonl(INADDR_ANY); server.sin_port=htons(PORT); if((bind(sockfd,(struct sockaddr *)&server,sizeof(server)))!=0) { printf("socket bind failed...\n"); exit(0); } else printf("Socket successfully binded..\n"); if((listen(sockfd,5))!=0) { printf("Listen failed...\n"); exit(0); } else printf("Server listening..\n"); length=sizeof(client); connfd=accept(sockfd,(struct sockaddr *)&client,&length);

if(connfd<0) { printf("server acccept failed...\n"); exit(0); } else printf("server acccept theclient...\n"); recv(connfd,&req,sizeof(req),0); if(!strcmp(us,req.username)&& !strcmp(ps,req.password)) { printf("connection accepted"); recv(connfd,&req,sizeof(req),0); } else { printf("wrong user"); exit(1); } if(!strcmp(req.method,"GET")) { FILE *fp=fopen(req.file,"r"); fread(res.data,1,sizeof(res.data),fp); } else { FILE *fp=fopen(req.file,"r"); fread(res.data,1,sizeof(res.data),fp); res.data[strlen(res.data)-1]='\0'; strcat(res.data,req.data); fp=fopen(req.file,"w"); fwrite(res.data,1,strlen(res.data),fp); } send(connfd,&res,sizeof(res),0); close(sockfd); }

You might also like