You are on page 1of 5

#include<stdio.

h>
#include<stdlib.h>
#include<unistd.h>
#include<errno.h>
#include<string.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<fcntl.h>
#define MYPORT 59871
void getfile(int,char*);
int main(int c,char *v[])
{
int listensocket,connectionsocket,retbind;
struct sockaddr_in serveraddress,cliaddr;
socklen_t len;
char buf[100],filename[100];
listensocket=socket(AF_INET,SOCK_STREAM,0);
if(listensocket<0)
exit(1);
memset(&serveraddress,0,sizeof(serveraddress));
serveraddress.sin_family=AF_INET;
serveraddress.sin_port=htons(MYPORT);
serveraddress.sin_addr.s_addr=htonl(INADDR_ANY);
retbind=bind(listensocket,(struct sockaddr*)&serveraddress,sizeof(serveraddress
));
if(-1==retbind)
{
printf("BIND ERROR\n");
exit(1);
}
listen(listensocket,5);
for( ; ; )
{
printf("server:Iam waiting..for client..\n");
len=sizeof(cliaddr);
connectionsocket=accept(listensocket,(struct sockaddr*)&cliaddr,&len);
if(connectionsocket<0)
{
if(errno==EINTR)
printf("Interrupted sytem call??");
continue;
}
printf("connection from %s\n",inet_ntop(AF_INET,&cliaddr.sin_addr,buf,sizeof(buf
)));
printf("enter the name of desti file");
scanf("%s",&filename);
getfile(connectionsocket,filename);
close(connectionsocket);
printf("Finished serving one client");
}
}
void getfile(int connectionsocket,char* filename)
{
int i,j,n,c,fd1;
char databuf[1000];
n=read(connectionsocket,databuf,1000);
i=strlen(databuf);
fd1=creat(filename,777);
c=write(fd1,databuf,i);
}

You might also like