K. UDP File Transfer Program in Unix Using C Programming

FILE TRANSFER USING  UDP SOCKET

File Transfer Client:

#include<sys/socket.h>
#include<arpa/inet.h>
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<string.h>
main()
{
int sfd,cfd;
char buf[1024]="";
struct sockaddr_in server,client;
sfd=socket(AF_INET,SOCK_DGRAM,0);
bzero(&server,sizeof(server));
server.sin_family=AF_INET;
server.sin_port=htons(1011);
inet_aton("172.16.29.67",&server.sin_addr);
int b=connect(sfd,(struct sockaddr *)&server,sizeof(server));
printf("CONNECT VALUE:%d\n",b);
int l=sizeof(client);
for(;;)
{
printf("ENTER THE FILE NAME\n");
scanf("%s",buf);
sendto(sfd,buf,strlen(buf),0,(struct sockaddr *)&server,sizeof(server));
recvfrom(sfd,buf,1024,0,NULL,NULL);
printf("RECEIVED FROM SERVER:%s\n",buf);
}
close(sfd);
}

File Transfer Server:

#include<sys/socket.h>
#include<arpa/inet.h>
#include<stdio.h>
#include<unistd.h>
#include<fcntl.h>
#include<sys/types.h>
#include<string.h>
main()
{
int sfd,cfd;
char buf[1024]="";
struct sockaddr_in server,client;
sfd=socket(AF_INET,SOCK_DGRAM,0);
bzero(&server,sizeof(server));
server.sin_family=AF_INET;
server.sin_port=htons(1011);
inet_aton("172.16.29.67",&server.sin_addr);
int b=bind(sfd,(struct sockaddr *)&server,sizeof(server));
printf("BIND VALUE:%d\n",b);
int l=sizeof(client);
for(;;)
{
recvfrom(sfd,buf,1024,0,(struct sockaddr *)&client,&l);
int fd=open(buf,O_RDONLY);
read(fd,buf,1024);
sendto(sfd,buf,strlen(buf),0,(struct sockaddr *)&client,sizeof(client));
printf("MESSAGE FROM CLIENT:%s\n",buf);
}
close(sfd);
}

OUTPUT:

SERVER: 

$cc udps.c -o udps 
$./udps
BIND VALUE:0 
accept value 4 
MESSAGE FROM CLIENT: 
#include<stdio.h> 
main() 
printf("hello"); 

CLIENT: 

#cc udps.c -o udps 
#./udps 
ENTER THE MESSAGE 
hello.c 
RECEIVED FROM SERVER
#include<stdio.h> 
main() 
printf("hello");