#include
#include
#include
#include
#include
#define SERV_UDP_PORT 2552
#define SERV_HOST_ADDR "10.1.2.199"
#define MAX 5000
#define MAX1 20
#define MAX2 100
main()
{
int sockfd,addrlen;
struct sockaddr_in cli_addr,serv_addr;
char buf[MAX];
FILE *fp;
char ch;
char f1[20];
char pass[MAX1]="Give_Pass:";
char data[MAX1]="Give_Data_To_Save:";
char eof[MAX1]="End_Of_File:";
char error[MAX1]="Error_In_File:";
char no[MAX1]="File_Not_Open:";
char file[MAX1]="Give_File_Name_FROM:";
char file1[MAX1]="Give_File_Name_TO:";
char buf1[MAX];
char tf[MAX1]=":Well_Come_To_TFTP:";
char tf1[MAX1]=":Try_Again:";
char tf2[MAX2]="What_Service_U_Want::1_Read_File::2_Write_File::3_Append_File:";
char log[MAX1]="Give_Login_Name:";
int a,b,q;
sockfd=socket(AF_INET,SOCK_DGRAM,0);
bzero((char *) &serv_addr,sizeof(serv_addr));
serv_addr.sin_addr.s_addr=inet_addr(SERV_HOST_ADDR);
serv_addr.sin_port=htons(SERV_UDP_PORT);
serv_addr.sin_family=AF_INET;
bind(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr));
addrlen=sizeof(cli_addr);
while(strcmp(buf,"bye")!=0)
{
a=0;
b=0;
memset(buf1,0,100);
recvfrom(sockfd,buf,MAX,0,(struct sockaddr *) &cli_addr,&addrlen);
printf("\nRead data is %s ",buf);
while(buf[a]!='\0')
{
if(buf[a]==27||buf[a]==8)
{
if(buf[a]==27)
{
a=a+1;
}
else
{
b=b-1;
a=a+1;
}
}
else
{
if(buf[a]=='I'||buf[a]=='A'||buf[a]=='C'||buf[a]=='E'||buf[a]=='O'||buf[a]=='F')
a++;
else
{
buf1[b]=buf[a];
a++;
b++;
}
}
}
printf("\nCMD is=%s\n",buf1);
if(strcmp(buf1,"SUD")==0)
{
sendto(sockfd,pass,MAX1,0,(struct sockaddr *) &cli_addr,addrlen); recvfrom(sockfd,buf,MAX,0,(struct sockaddr *) &cli_addr,&addrlen);
printf("\nPasswd Of User= %s\n",buf);
if(strcmp(buf,"ANG")==0)
{
printf("\n::::Well Come To TFTP::::\n");
sendto(sockfd,tf,MAX1,0,(struct sockaddr *) &cli_addr,addrlen);
recvfrom(sockfd,buf,MAX,0,(struct sockaddr *) &cli_addr,&addrlen);
printf("\n User= %s\n",buf);
sendto(sockfd,tf2,MAX2,0,(struct sockaddr *) &cli_addr,addrlen);
recvfrom(sockfd,buf,MAX,0,(struct sockaddr *) &cli_addr,&addrlen);
printf("\n User= %s\n",buf);
if(strcmp(buf,"READ")==0)
{
sendto(sockfd,file,MAX1,0,(struct sockaddr *) &cli_addr,addrlen);
recvfrom(sockfd,buf,MAX,0,(struct sockaddr *) &cli_addr,&addrlen);
strcpy(f1,buf);
printf("\n File_Name= %s\n",f1);
fp=fopen(f1,"r");
if(feof(fp))
sendto(sockfd,eof,MAX1,0,(struct sockaddr *) &cli_addr,addrlen);
if(ferror(fp)!=0)
sendto(sockfd,error,MAX1,0,(struct sockaddr *) &cli_addr,addrlen);
if(fp==NULL)
sendto(sockfd,no,MAX1,0,(struct sockaddr *) &cli_addr,addrlen);
q=0;
while(!feof(fp))
{
ch=fgetc(fp);
buf[q]=ch;
printf("%c",ch);
q++;
}
sendto(sockfd,buf,MAX,0,(struct sockaddr *) &cli_addr,addrlen);
}
if(strcmp(buf,"WRITE")==0)
{
sendto(sockfd,file1,MAX1,0,(struct sockaddr *) &cli_addr,addrlen);
recvfrom(sockfd,buf,MAX,0,(struct sockaddr *) &cli_addr,&addrlen);
strcpy(f1,buf);
printf("\n File_Name= %s\n",f1);
fp=fopen(f1,"w+");
if(feof(fp))
sendto(sockfd,eof,MAX1,0,(struct sockaddr *) &cli_addr,addrlen);
if(ferror(fp)!=0)
sendto(sockfd,error,MAX1,0,(struct sockaddr *) &cli_addr,addrlen);
if(fp==NULL)
sendto(sockfd,no,MAX1,0,(struct sockaddr *) &cli_addr,addrlen);
sendto(sockfd,data,MAX1,0,(struct sockaddr *) &cli_addr,addrlen);
recvfrom(sockfd,buf,MAX,0,(struct sockaddr *) &cli_addr,&addrlen);
printf("\nRecieve_File_Content= %s\n",buf);
q=0;
fwrite(buf,MAX,1,fp);
}
}
}
else
{
printf("try again\n");
sendto(sockfd,tf1,MAX1,0,(struct sockaddr *) &cli_addr,addrlen);
}
}
close(sockfd);
Copyright © 2011 - All Rights Reserved - Softron.in
Template by Softron Technology