linux下 tftp客户端,简易TFTP客户端

/*************************************************************************

*       Filename:  tftpclient.c

*    Description:

*        Version:  1.0

*        Created:  2011年05月06日 09时48分38秒

*       Revision:  none

*       Compiler:  gcc

*         Author:  wenhao (wh), hnrain1004@gmail.com

*        Company:  sunplusapp

* ************************************************************************/#include#include#include#include#include#include#includeintmain(intargc,char*argv[])

{structsockaddr_in addr;charbuf[516]="";intaddrlen=sizeof(addr);intsockfd;intbuflen;intfd;charcommand;charserial=0;if(argc<3)

{

printf("input error!\n");

exit(0);

}

addr.sin_family=AF_INET;

addr.sin_port=htons(69);

addr.sin_addr.s_addr=inet_addr(argv[1]);

sockfd=socket(AF_INET,SOCK_DGRAM,0);

buflen=sprintf(buf,"%c%c%s%c%s%c",0,1,argv[2],0,"octet",0);

sendto(sockfd,buf,buflen,0,(structsockaddr*)&addr,sizeof(addr));

fd=open(argv[2],O_WRONLY|O_CREAT,0666);if(fd==-1)

{

perror("open");

exit(1);

}do{

buflen=recvfrom(sockfd,buf,516,0,(structsockaddr*)&addr,&addrlen);if(buflen==-1)

{

perror("recvfrom");

}

command=buf[1];if(command==3)

{if(serial

{

serial=buf[3];

write(fd,buf+4,buflen-4);

}

buf[1]=4;

sendto(sockfd,buf,4,0,(structsockaddr*)&addr,sizeof(addr));

}elseif(command==5)

{

close(fd);

close(sockfd);

unlink(argv[2]);

printf("recv error serial!\n");

}

}while(buflen==516);

close(fd);

close(sockfd);return0;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值