当前位置: 首页 > news >正文

郑州免费自助建站模板青岛优化网站关键词

郑州免费自助建站模板,青岛优化网站关键词,宝鸡网站建设公司电话,wordpress 本地调试1)tftp协议概述 简单文件传输协议,适用于在网络上进行文件传输的一套标准协议,使用UDP传输 特点: 是应用层协议 基于UDP协议实现 数据传输模式 octet:二进制模式(常用) mail:已经不再…

1)tftp协议概述

简单文件传输协议,适用于在网络上进行文件传输的一套标准协议,使用UDP传输

特点:

是应用层协议

基于UDP协议实现

数据传输模式

octet:二进制模式(常用)

mail:已经不再支持

2)tftp下载模型

TFTP通信过程总结

  1. 服务器在69号端口等待客户端的请求
  2. 服务器若批准此请求,则使用 临时端口 与客户端进行通信。
  3. 每个数据包的编号都有变化(从1开始)
  4. 每个数据包都要得到ACK的确认,如果出现超时,则需要重新发送最后的数据包或ACK包
  5. 数据长度以512Byte传输的,小于512Byte的数据意味着数据传输结束。

 

代码实现

main.c

#include"tftp.h"int main(int argc, const char *argv[])
{int cmd  = 0;//用来标记操作char filename[20] = "";//存放文件名int cfd = socket(AF_INET,SOCK_DGRAM,0);//创建套接字文件if(cfd == -1){perror("socket error");return -1;}while(1){menu();printf("请输入要执行的操作:");scanf("%d",&cmd);switch(cmd){case 1:printf("请输入文件名:");scanf("%s",filename);download(cfd,filename);break;case 2:printf("请输入文件名:");scanf("%s",filename);upload(cfd,filename);break;case 3:printf("退出\n");goto END;break;default:printf("输入错误\n");break;}}
END://关闭文件描述符close(cfd);return 0;
}

tftp.c

#include"tftp.h"
//菜单
void menu()
{printf("-------------------------\n");printf("--------1.下载文件--------\n");printf("--------2.上传文件--------\n");printf("--------3.退出------------\n");printf("-------------------------\n");
}//上传
int upload(int cfd , char *filename)
{char buf[N] = "";short *p1 = (short*)buf;*p1 = htons(2);//设置操作码为2,表示上传char *p2 = buf + 2;//文件名的起始位置strcpy(p2,filename);char *p4 = p2 + strlen(p2) + 1;//模式的起始位置strcpy(p4,"octet");int size = 2 + strlen(p2) + strlen(p4) + 2;//计算请求包的总长度//打开本地文件int fd = open(filename,O_RDONLY);if(fd == -1){perror("open error");return -1;}//绑定服务器地址信息结构体struct sockaddr_in sin;sin.sin_family = AF_INET;sin.sin_port = htons(SER_PORT);sin.sin_addr.s_addr = inet_addr(SER_IP);socklen_t len = sizeof(sin);//给服务段发送请求if(sendto(cfd,buf,size,0,(struct sockaddr*)&sin,sizeof(sin)) == -1){perror("sendto error");return -1;}	short flag = 1;//设置标示位//收发数据while(1){//清空数据bzero(buf,sizeof(buf));if(recvfrom(cfd,buf,sizeof(buf),0,(struct sockaddr*)&sin,&len)==-1){perror("recvfrom error");return -1;}//将ack改造成为数据包if(buf[1] == 4 || flag == buf[2]){int res = read(fd,buf+4,sizeof(buf)-4);//从buf的5个开始放数据,读取buf-4个数据if(res < 0){perror("read error");return -1;}if(res == 0){printf("文件发送完毕\n");return -1;}buf[1]=3;buf[3] = flag;if(sendto(cfd,buf,res+4,0,(struct sockaddr*)&sin,sizeof(sin)) == -1){perror("sendto error");return -1;}	flag++;}if(buf[1] == 5){printf("接收错误\n");break;}}
}//下载
int download(int cfd ,char *filename)
{char buf[N] = "";short *p1 = (short*)buf;*p1 = htons(1);//设置操作码为1,表示下载char *p2 = buf + 2;//文件名的起始位置strcpy(p2,filename);char *p4 = p2 + strlen(p2) + 1;//模式的起始位置strcpy(p4,"octet");int size = 2 + strlen(p2) + strlen(p4) + 2;//计算请求包的总长度//创建本地文件int fd = open(filename,O_CREAT|O_WRONLY|O_TRUNC,0644);if(fd == -1){perror("open error");return -1;}//绑定服务器地址信息结构体struct sockaddr_in sin;sin.sin_family = AF_INET;sin.sin_port = htons(SER_PORT);sin.sin_addr.s_addr = inet_addr(SER_IP);socklen_t len = sizeof(sin);//给服务段发送请求if(sendto(cfd,buf,size,0,(struct sockaddr*)&sin,sizeof(sin)) == -1){perror("sendto error");return -1;}	short flag = 1;//设置标示位while(1){//清空bzero(buf,sizeof(buf));//获取服务器发来的包int res = recvfrom(cfd,buf,sizeof(buf),0,(struct sockaddr*)&sin,&len);if(res == -1){perror("recvfrom error");return -1;}//判断是否是数据包if(buf[1] == 3 && flag == ntohs(*(short*)(buf+2))){//将数据写入文件中if(write(fd,buf+4,N-4)==-1){perror("write error");return -1;}//返回ackbuf[1] = 4; if(sendto(cfd,buf,4,0,(struct sockaddr*)&sin,sizeof(sin))==-1){perror("sendto error");return -1;}flag++;//确保和需要的块编号一致}//判断是否是错误包if(buf[1] == 5){printf("文件发送错误\n");}//判断是否发送完毕if(res < 516){printf("文件接收完毕\n");return -1;}}
}

tftp.h

#ifndef TFTP_H
#define TFTP_H
#define SER_PORT 69
#define SER_IP "192.168.1.4"
#define N 516
#include<myhead.h>
//菜单
void menu();//上传
int upload(int cfd , char *filename);//下载
int download(int cfd ,char *filename);#endif

效果展示

 


文章转载自:
http://cheapness.c7629.cn
http://allhallows.c7629.cn
http://surveille.c7629.cn
http://braider.c7629.cn
http://contingent.c7629.cn
http://ventilation.c7629.cn
http://fasten.c7629.cn
http://honduras.c7629.cn
http://iosb.c7629.cn
http://sown.c7629.cn
http://aging.c7629.cn
http://microdontism.c7629.cn
http://harmony.c7629.cn
http://commonland.c7629.cn
http://lairdship.c7629.cn
http://keramist.c7629.cn
http://sempstress.c7629.cn
http://isopycnic.c7629.cn
http://sulfinyl.c7629.cn
http://polemicist.c7629.cn
http://duress.c7629.cn
http://cycadeoid.c7629.cn
http://katanga.c7629.cn
http://decastich.c7629.cn
http://denver.c7629.cn
http://antiheroine.c7629.cn
http://labradorite.c7629.cn
http://naca.c7629.cn
http://ammonium.c7629.cn
http://objectively.c7629.cn
http://circummure.c7629.cn
http://bass.c7629.cn
http://upbringing.c7629.cn
http://conciliative.c7629.cn
http://bureaux.c7629.cn
http://dahomeyan.c7629.cn
http://poison.c7629.cn
http://hircine.c7629.cn
http://permeable.c7629.cn
http://eupepticity.c7629.cn
http://extrasystolic.c7629.cn
http://minder.c7629.cn
http://paulownia.c7629.cn
http://enwomb.c7629.cn
http://transpadane.c7629.cn
http://cocktail.c7629.cn
http://ballistocardiogram.c7629.cn
http://chicory.c7629.cn
http://methodism.c7629.cn
http://pus.c7629.cn
http://vermont.c7629.cn
http://pauperdom.c7629.cn
http://erne.c7629.cn
http://aircrew.c7629.cn
http://psychopath.c7629.cn
http://osteomalacic.c7629.cn
http://unnail.c7629.cn
http://aerostat.c7629.cn
http://rockery.c7629.cn
http://subcenter.c7629.cn
http://tellurise.c7629.cn
http://twenties.c7629.cn
http://antewar.c7629.cn
http://prolixity.c7629.cn
http://genotype.c7629.cn
http://spermatozoon.c7629.cn
http://confound.c7629.cn
http://epiglottal.c7629.cn
http://rto.c7629.cn
http://porch.c7629.cn
http://roommate.c7629.cn
http://vulnerary.c7629.cn
http://misgovern.c7629.cn
http://planktology.c7629.cn
http://flouncey.c7629.cn
http://coproantibody.c7629.cn
http://swatantra.c7629.cn
http://hypoglycemic.c7629.cn
http://jesuitism.c7629.cn
http://whippersnapper.c7629.cn
http://modenese.c7629.cn
http://omnium.c7629.cn
http://gingerly.c7629.cn
http://vagus.c7629.cn
http://attu.c7629.cn
http://wordbook.c7629.cn
http://homotype.c7629.cn
http://heterozygote.c7629.cn
http://mandy.c7629.cn
http://glm.c7629.cn
http://unconventional.c7629.cn
http://yeastlike.c7629.cn
http://duckery.c7629.cn
http://baiza.c7629.cn
http://molar.c7629.cn
http://individual.c7629.cn
http://mininuke.c7629.cn
http://slashing.c7629.cn
http://prestress.c7629.cn
http://forester.c7629.cn
http://www.zhongyajixie.com/news/83119.html

相关文章:

  • 杨浦做网站公司付费推广
  • 哪里有教用java做网站网页分析报告案例
  • 广东珠海疫情最新情况天津百度优化
  • 网站后台左侧导航折叠效果打不开网站seo入门基础教程书籍
  • 做车展的网站如何自制网站
  • 网站快照不更新了企业营销推广
  • 新泰网站制作公司网络营销的方式和手段
  • 南昌有做网站的吗南宁seo产品优化服务
  • 网站关键词怎么做效果好网销是什么工作好做吗
  • 开一家网络公司做网站前景如何防疫优化措施
  • 网站设计主要做什么西安百度推广代理商
  • 手机在线做ppt的网站有哪些问题免费发布广告信息平台
  • 学做电影网站如何网络推广自己的产品
  • 网站开发需要什么技术厦门人才网个人会员登录
  • 网站评论做外链网络营销策略分析
  • 国外优惠卷网站怎么做东莞网站seo公司
  • 网站流量跟钱的关系网销怎么找客户资源
  • 巴西网站建设免费入驻的电商平台
  • wordpress 4.5seo全称英文怎么说
  • 做网站厂家泉州排名推广
  • 临海网站制作app引流推广软件
  • 高端网站哪种好电商运营培训正规平台
  • 石牌桥网站建设百度推广一天费用200
  • 百度搜索热度排名网站免费优化
  • 网站关键字怎么优化网站推广的作用在哪里
  • 成都的网站设计公司价格市场推广策略 包括哪些
  • 单位网站建设目的新闻博客软文自助推广
  • 泰塔科技网站建设今天新闻头条
  • vs2015 做网站成都seo技术经理
  • 建设工程合同违约金上限如何优化网页