国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

有沒有做絲網(wǎng)的網(wǎng)站呀全能優(yōu)化大師

有沒有做絲網(wǎng)的網(wǎng)站呀,全能優(yōu)化大師,做網(wǎng)站準(zhǔn)備內(nèi)容,韶關(guān)網(wǎng)站制作目錄 作業(yè)要求&#xff1a;基于UDP的TFTP文件傳輸 代碼 下載功能效果圖?編輯 上傳功能效果圖 思維導(dǎo)圖 模擬面試題和答案&#xff08;定期更新&#xff09; 作業(yè)要求&#xff1a;基于UDP的TFTP文件傳輸 完成文件的上傳和下載功能 代碼 #include<myhead.h>//實(shí)現(xiàn)…

目錄

作業(yè)要求:基于UDP的TFTP文件傳輸

代碼

下載功能效果圖?編輯

上傳功能效果圖

思維導(dǎo)圖

模擬面試題和答案(定期更新)


作業(yè)要求:基于UDP的TFTP文件傳輸

完成文件的上傳和下載功能

代碼

#include<myhead.h>//實(shí)現(xiàn)下載功能
int do_download(int cfd, struct sockaddr_in sin)
{//定義變量存儲(chǔ)下載請(qǐng)求包c(diǎn)har buf[516] = "";//定義變量存儲(chǔ)文件名char fileName[40] = "";printf("請(qǐng)輸入文件名:");scanf("%s", fileName);getchar();//組裝請(qǐng)求包short *p1 = (short *)buf;*p1 = htons(1);                 //寫1表明要下載char *p2 = buf+2;           //文件名段strcpy(p2, fileName);char *p3 = p2+strlen(p2)+1;    //模式段strcpy(p3, "octet");int size = 4 + strlen(p2) + strlen(p3);      //要發(fā)送的請(qǐng)求包的大小//向服務(wù)器發(fā)送下載請(qǐng)求if(sendto(cfd, buf, size, 0, (struct sockaddr*)&sin, sizeof(sin)) == -1){perror("sendto error");return -1;}printf("請(qǐng)求成功\n");socklen_t socklen = sizeof(sin);//打開一文件接受下載文件int fd = open(fileName,O_RDWR|O_TRUNC|O_CREAT,0666);if(fd<0){perror("open error");return -1;}int  res;while(1){//接受數(shù)據(jù)包bzero(buf,sizeof(buf));res = recvfrom(cfd,buf,sizeof(buf),0,(struct sockaddr*)&sin,&socklen);if(res<0){perror("recvfrom error");return -1;}if(buf[1]==3){//寫入文件if(write(fd,buf+4,res-4)<0){perror("write");return -1;}//構(gòu)造ACKbuf[1] = 4;//發(fā)送ACKif(sendto(cfd,buf,4,0,(struct sockaddr*)&sin,sizeof(sin))<0){perror("sendto");return -1;}//判斷數(shù)據(jù)包中的數(shù)據(jù)大小if(res-4<512){printf("%s 下載完畢\n",fileName);break;}}else if(buf[1]==5){printf("%d %s\n",ntohs(*(short*)(buf+2)),buf+4);break;}}close(fd);	return 0;
}//實(shí)現(xiàn)上傳功能
int do_upload(int cfd,struct sockaddr_in sin)
{//定義變量存儲(chǔ)上傳請(qǐng)求包c(diǎn)har buf[516] = "";//定義變量存儲(chǔ)文件名char fileName[40] = "";printf("請(qǐng)輸入文件名:");scanf("%s", fileName);getchar();//組裝請(qǐng)求包short *p1 = (short *)buf;*p1 = htons(2);                 //寫2表明要上傳char *p2 = buf+2;           //文件名段strcpy(p2, fileName);char *p3 = p2+strlen(p2)+1;    //模式段strcpy(p3, "octet");int size = 4 + strlen(p2) + strlen(p3);      //要發(fā)送的請(qǐng)求包的大小//向服務(wù)器發(fā)送上傳請(qǐng)求if(sendto(cfd, buf, size, 0, (struct sockaddr*)&sin, sizeof(sin)) == -1){perror("sendto error");return -1;}printf("請(qǐng)求成功\n");socklen_t socklen = sizeof(sin);//打開準(zhǔn)備上傳的文件int fd = open(fileName,O_RDONLY);if(fd<0){perror("open error");return -1;}int res1,res2;int kbh = 1;while(1){//接受數(shù)據(jù)包bzero(buf,sizeof(buf));res1 = recvfrom(cfd,buf,4,0,(struct sockaddr*)&sin,&socklen);if(res1 < 0){perror("recvfrom error");return -1;}//判斷是否接收到服務(wù)器發(fā)來的ACKif(buf[1]==4){//填充發(fā)送的數(shù)據(jù)包buf[1] = 3;buf[3] = kbh;res2 = read(fd,buf+4,512);if(res2 < 0){perror("read error");return -1;}					//向服務(wù)器發(fā)送數(shù)據(jù)包if(sendto(cfd,buf,sizeof(buf),0,(struct sockaddr*)&sin,sizeof(sin)) == -1){perror("sendto error");return -1;}//發(fā)一次塊編號(hào)加一一次kbh++;//循環(huán)退出條件if(res2 < 512){close(fd);printf("文件上傳完畢\n");break;}}else if(buf[1]==5){printf("%d %s\n",ntohs(*(short*)(buf+2)),buf+4);break;}}return 0;
}
int main(int argc, const char *argv[])
{if(argc != 2){printf("input error\n");printf("usage:./a.out ip\n");return -1;}//1、創(chuàng)建套接字int cfd = socket(AF_INET, SOCK_DGRAM, 0);if(cfd == -1){perror("socket error");return -1;}//2、填充服務(wù)器地址信息結(jié)構(gòu)體struct sockaddr_in sin;sin.sin_family = AF_INET;sin.sin_port = htons(69);sin.sin_addr.s_addr = inet_addr(argv[1]);int menu = -1;while(1){system("clear");                     //清屏printf("\t\t======1、下載=======\n");printf("\t\t======2、上傳=======\n");printf("\t\t======0、退出=======\n");printf("請(qǐng)輸入功能:");scanf("%d", &menu);getchar();//多分支選擇switch(menu){case 1:{do_download(cfd, sin);}break;case 2:{do_upload(cfd,sin);}break;case 0:goto POS;default:printf("輸入功能有誤,請(qǐng)重新輸入\n");}//阻塞printf("輸入任意鍵,按回車清空:");while(getchar() != '\n');}POS://關(guān)閉套接字close(cfd);return 0;
}

下載功能效果圖

上傳功能效果圖

思維導(dǎo)圖

(從第二章到第五章)

模擬面試題和答案(定期更新)

http://m.aloenet.com.cn/news/28549.html

相關(guān)文章:

  • 如何看網(wǎng)站的流量網(wǎng)站流量來源
  • 怎么做網(wǎng)站教程圖片google引擎免費(fèi)入口
  • 網(wǎng)站設(shè)計(jì)機(jī)構(gòu)文檔在線制作網(wǎng)站免費(fèi)
  • 網(wǎng)站做的漂浮為什么不動(dòng)免費(fèi)p站推廣網(wǎng)站入口
  • 網(wǎng)站設(shè)計(jì)怎么保持風(fēng)格一致視頻廣告接單平臺(tái)
  • 網(wǎng)站建設(shè)服務(wù)目標(biāo)全網(wǎng)模板建站系統(tǒng)
  • 邳州網(wǎng)站網(wǎng)站建設(shè)微信小程序開發(fā)費(fèi)用一覽表
  • 網(wǎng)站模板 家網(wǎng)絡(luò)營銷案例題
  • 做鞋子出口需要作網(wǎng)站嗎網(wǎng)絡(luò)搭建是干什么的
  • 易企秀微網(wǎng)站如何做文字鏈接seo怎么去優(yōu)化
  • 容桂網(wǎng)站制作咨詢企業(yè)查詢官網(wǎng)
  • 手機(jī)端做網(wǎng)站軟件文大俠seo
  • b2c平臺(tái)網(wǎng)站建設(shè)比百度好用的搜索軟件手機(jī)版
  • 上傳圖片做網(wǎng)站維護(hù)長春seo網(wǎng)站管理
  • 網(wǎng)站建設(shè)違約責(zé)任今日短新聞20條
  • 做美食推廣的網(wǎng)站朝陽區(qū)搜索優(yōu)化seosem
  • 寧波網(wǎng)站建設(shè)公司軟文范例大全1000字
  • 大連企業(yè)做網(wǎng)站最新軍事新聞 今日 最新消息
  • 婚戀網(wǎng)站女孩子做美容安卓優(yōu)化大師官方版
  • 保定定興網(wǎng)站建設(shè)對(duì)百度競(jìng)價(jià)排名的看法
  • 織夢(mèng)的手機(jī)端網(wǎng)站網(wǎng)站開發(fā)的步驟
  • 食品網(wǎng)站建設(shè)策劃書百度問答庫
  • 網(wǎng)站沒有備案可以做百度推廣嗎最吸引人的引流話術(shù)
  • 青島網(wǎng)站運(yùn)營推廣關(guān)鍵詞排名方案
  • 合肥建站平臺(tái)windows優(yōu)化大師官方免費(fèi)
  • html網(wǎng)站開發(fā)中的應(yīng)用百度高級(jí)搜索
  • 濟(jì)南網(wǎng)站設(shè)計(jì)建設(shè)公司百度營銷推廣登錄平臺(tái)
  • 建設(shè)資格執(zhí)業(yè)注冊(cè)中心網(wǎng)站長沙seo網(wǎng)絡(luò)推廣
  • 網(wǎng)站上的搜索怎么做青島網(wǎng)站快速排名提升
  • 網(wǎng)站建設(shè)周期重慶seo網(wǎng)絡(luò)推廣關(guān)鍵詞