Path: blob/master/08-file-transfer-protocol/server.c
137 views
/*1* Title : File Transfer Protocol2* Name : Aditya Pratap Singh Rajput3* Subject : Network Protocols And Programming using C4*5Note : Please consider the TYPOS in comments.6Thanks.7*/89#include "stdio.h"10#include "stdlib.h"11#include "string.h"12//headers for socket and related functions13#include <sys/types.h>14#include <sys/socket.h>15#include <sys/stat.h>16//for including structures which will store information needed17#include <netinet/in.h>18#include <unistd.h>19//for gethostbyname20#include "netdb.h"21#include "arpa/inet.h"2223// defining constants24#define PORT 900225#define BACKLOG 526int main()27{28int size;29int socketDescriptor = socket(AF_INET, SOCK_STREAM, 0);30struct sockaddr_in serverAddress, clientAddress;3132socklen_t clientLength;3334struct stat statVariable;3536char buffer[100], file[1000];3738FILE *filePointer;39bzero(&serverAddress, sizeof(serverAddress));4041serverAddress.sin_family = AF_INET;42serverAddress.sin_addr.s_addr = htonl(INADDR_ANY);43serverAddress.sin_port = htons(PORT);4445bind(socketDescriptor, (struct sockaddr *)&serverAddress, sizeof(serverAddress));4647listen(socketDescriptor,BACKLOG);4849printf("Server has started working ...");50int clientDescriptor = accept(socketDescriptor,(struct sockaddr*)&clientAddress,&clientLength);5152while(1){53bzero(buffer,sizeof(buffer));54bzero(file,sizeof(file));55recv(clientDescriptor,buffer,sizeof(buffer),0);56filePointer = fopen(buffer,"r");57stat(buffer,&statVariable);58size=statVariable.st_size;59fread(file,sizeof(file),1,filePointer);60send(clientDescriptor,file,sizeof(file),0);61}62return 0;63}6465