Source Code : TFTPC.C

TFTPC.C

#include<sys/socket.h>

#include<sys/types.h>

#include<string.h>

#include<stdio.h>

#include<netinet/in.h>

#include<arpa/inet.h>

#define SERV_UDP_PORT 2552

#define SERV_HOST_ADDR "10.1.2.199"

#define MAX 5000

#define MAX1 20

main()

{

  FILE *fp;

  int sockfd,addrlen,a,b,k;

  int ascii[100];

  char ch1,ch;

  char f1[20];

  char f2[20];

  int q;

  char buf3[MAX];

  struct sockaddr_in serv_addr,cli_addr;

  char buf[MAX];

  char bf[MAX];

  char buf1[20]="ICAEC";

  char se[MAX1]="Service:";

  char buf2[20]="ICAEOF";

  bzero((char *) &serv_addr,sizeof(serv_addr));

  serv_addr.sin_family=AF_INET;

  serv_addr.sin_port=htons(SERV_UDP_PORT);

  serv_addr.sin_addr.s_addr=inet_addr(SERV_HOST_ADDR);

  sockfd=socket(AF_INET,SOCK_DGRAM,0);

  bzero((char *) &cli_addr,sizeof(cli_addr));

  cli_addr.sin_addr.s_addr=htonl(INADDR_ANY);

  cli_addr.sin_port=htons(0);

  cli_addr.sin_family=AF_INET;

  bind(sockfd,(struct sockaddr *) &cli_addr,sizeof(cli_addr));

  addrlen=sizeof(serv_addr);

 

  while(strcmp(buf,"bye")!=0)

  {

 

  addrlen=sizeof(serv_addr);

  memset(buf3,0,MAX);

  memset(buf,0,MAX);

  a=0;

  printf("Enter string=");

  scanf("%s",buf);

  a=0;

  while(buf[a]!='\0')

  {

  ascii[a]=toascii(buf[a]);

  a++;

  }

  ascii[a]=16;

  a=0;

  b=0;

  while(ascii[a]!=16)

  {

  if(ascii[a]==8||ascii[a]==27)

  {

  if(ascii[a]==27)

  {

  buf3[b]=buf[a];

  b++;

  a++;

  k=0;

  while(buf2[k]!='\0')

  {

  buf3[b]=buf2[k];

  b++;

  k++;

  }

  }

  else

  {

  buf3[b]=buf[a];

  b++;

  a++;

  k=0;

  while(buf1[k]!='\0')

  {

  buf3[b]=buf1[k];

  b++;

  k++;

  }

  }

  }

  else

  {

  buf3[b]=buf[a];

  a++;

  b++;

  }

  }

  printf("\nSending string is :%s\n",buf3);

 

  sendto(sockfd,buf3,MAX,0,(struct sockaddr *)&serv_addr,addrlen);

  recvfrom(sockfd,buf,MAX,0,(struct sockaddr *)&serv_addr,&addrlen);

  printf("\nRecieve Data is1:%s\n",buf);

  if(strcmp(buf,"Give_File_Name_FROM:")==0)

  {

  printf("\nGive_File_To_Read_From_Server_Machine:\n");

  //scanf("%s",f1);

  scanf("%s",buf);

  sendto(sockfd,buf,MAX,0,(struct sockaddr *)&serv_addr,addrlen);

  recvfrom(sockfd,buf,MAX,0,(struct sockaddr *)&serv_addr,&addrlen);

  printf("\nRecieve Data is1:%s\n",buf);

  printf("\nGive_File_To_Save_Local_Machine:\n");

  scanf("%s",f1);

  fp=fopen(f1,"w");

  fwrite(buf,MAX,1,fp);

  }

 

  if(strcmp(buf,"Give_File_Name_TO:")==0)

  {

  printf("\nGive_File_Name_To_Server_Machine:\n");

 

  scanf("%s",buf);

  strcpy(f1,buf);

  sendto(sockfd,buf,MAX,0,(struct sockaddr *)&serv_addr,addrlen);

  recvfrom(sockfd,buf,MAX,0,(struct sockaddr *)&serv_addr,&addrlen);

  printf("\nFile To Be Save On Server:\n");

  scanf("%s",f2);

  printf("\nRecieve Data is1:%s\n",buf);

  fp=fopen(f2,"r");

  q=0;

  while(!feof(fp))

  {

  ch = fgetc(fp);

  buf[q]=ch;

  q++;

  }

  sendto(sockfd,buf,MAX,0,(struct sockaddr *)&serv_addr,addrlen);

  }

  if(strcmp(buf,":Well_Come_To_TFTP:")==0)

  {

 

  sendto(sockfd,se,MAX1,0,(struct sockaddr *)&serv_addr,addrlen);

  recvfrom(sockfd,buf,MAX,0,(struct sockaddr *)&serv_addr,&addrlen);

  printf("\nRecieve Data is2:%s\n",buf);

 

  }

  }

  close(sockfd);