server file transfer

8
SERVER FILE TRANSFER Server: #include<stdlib.h> #include<stdio.h> #include<errno.h> #include<string.h> #include<sys/types.h> #include<netinet/in.h> #include<sys/wait.h> #include<sys/socket.h> #include<signal.h> #include<ctype.h> #include<arpa/inet.h> #include<netdb.h> #define PORT 9009 #define BACKLOG 5 #define LENGTH 512 void 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) {

Upload: sara-swathi

Post on 20-Oct-2015

7 views

Category:

Documents


0 download

DESCRIPTION

file transfer through network

TRANSCRIPT

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