server file transfer
DESCRIPTION
file transfer through networkTRANSCRIPT
SERVER FILE TRANSFERServer:#include#include#include#include#include#include#include#include#include#include#include#include#define PORT 9009#define BACKLOG 5#define LENGTH 512void error(const char *msg){perror(msg);exit(1);}int main(){int sockfd;int nsockfd;int num;int sin_size;struct sockaddr_in addr_local;struct sockaddr_in addr_remote;char recvbuf[LENGTH];if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1){fprintf(stderr,"ERROR:Failed to obtain Socket Descriptor.(errno=%d)\n",errno);exit(1);}elseprintf("[Server] Obtaining socket descriptor successfully.\n");addr_local.sin_family=AF_INET;addr_local.sin_port=htons(PORT);addr_local.sin_addr.s_addr=INADDR_ANY;bzero(&(addr_local.sin_zero),8);if(bind(sockfd,(struct sockaddr*)&addr_local,sizeof(struct sockaddr))==-1){fprintf(stderr,"ERROR:Failed to bind Port.(errno=%d)\n",errno);exit(1);}elseprintf("[Server] Binded tcp port %d in addr 127.0.0.1 successfully.\n",PORT);if(listen(sockfd,BACKLOG)==-1){fprintf(stderr,"ERROR:Failed to listen to Port.(errno=%d)\n",errno);exit(1);}elseprintf("[Server] Listening the port %d successfully.\n",PORT);int success=0;while(success==0){sin_size=sizeof(struct sockaddr_in);if((nsockfd=accept(sockfd,(struct sockaddr*)&addr_remote,&sin_size))==-1){fprintf(stderr,"ERROR:Obtaining new Socket Descriptor.(errno=%d)\n",errno);exit(1);}elseprintf("[Server] Server has got connected from %s.\n",inet_ntoa(addr_remote.sin_addr));char *fr_name="receive.txt";FILE *fr=fopen(fr_name,"a");if(fr==NULL)printf("File %s Cannot be opened file on server.\n",fr_name);else{bzero(recvbuf,LENGTH);int fr_block_sz=0;while((fr_block_sz=recv(nsockfd,recvbuf,LENGTH,0))>0){int write_sz=fwrite(recvbuf,sizeof(char),fr_block_sz,fr);if(write_sz0){if(send(sockfd,sdbuf,fs_block_sz,0)0){int write_sz=fwrite(recvbuf,sizeof(char),fr_block_sz,fr);if(write_sz