版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、. 如何基于c語(yǔ)言tftp效勞器與客戶端實(shí)現(xiàn)本篇文章主要的容就是教大家,如何基于c語(yǔ)言tftp效勞器與客戶端實(shí)現(xiàn),是非常精彩的容,希望對(duì)大家的學(xué)習(xí)之路有所幫助。TFTP(Trivial File Transfer Protocol,簡(jiǎn)單文件傳輸協(xié)議)是TCP/IP協(xié)議族中的一個(gè)用來(lái)在客戶機(jī)與效勞器之間進(jìn)展簡(jiǎn)單文件傳輸?shù)膮f(xié)議,提供不復(fù)雜、開(kāi)銷不大的文件傳輸效勞。端口號(hào)為69。開(kāi)發(fā)環(huán)境:ubuntu所用知識(shí)點(diǎn):c,socket, tcp/ip協(xié)議A)本實(shí)驗(yàn)主要實(shí)現(xiàn)tftp協(xié)議的效勞器與客戶端。效勞器實(shí)現(xiàn)功能有:1)接收處理客戶端請(qǐng)求,上傳下下載文件2)進(jìn)展用戶驗(yàn)證3)對(duì)傳輸數(shù)據(jù)進(jìn)展加密解密處理4)
2、生成日志文件客戶端實(shí)現(xiàn)功能有:1)向效勞器發(fā)出請(qǐng)求,上傳或下載文件2)對(duì)傳輸數(shù)據(jù)加密解密3)對(duì)用戶信息進(jìn)展MD5加密B)相關(guān)代碼實(shí)現(xiàn):宏定下:#ifndef MAKEWORD#define MAKEWORD(l,h) (unsigned short)(unsigned char)(l)|(unsigned short)(unsigned char)(h)8);/塊號(hào)2個(gè)字節(jié)pos+;bufferpos = (char)num;pos+;return pos;/Data包填充int makedata(unsigned short num,char *data,int datasize,char
3、*buffer,int bufsize)int pos = 0;bufferpos = 0;pos+;bufferpos = TFTP_DATA; /操作碼為03pos+;bufferpos = (char)(num8);/塊號(hào)pos+;bufferpos = (char)num;pos+;memcpy(&bufferpos,data,datasize);/填充數(shù)據(jù)pos = pos + datasize;return pos;/ERROR包填充int makeerr(unsigned short num,char *buffer)int pos=0;bufferpos=0;pos+;buff
4、erpos=TFTP_ERROR; /操作碼為05pos+;bufferpos = (char)(num8); /錯(cuò)誤種類號(hào)pos+;bufferpos = (char)num;pos+;return pos;日志log.c實(shí)現(xiàn)#includestatic char log100; /日志char datetime20; /記錄時(shí)間變量int timeout=2,retran=3; /效勞器參數(shù)void record(int a,struct sockaddr_in *sin,char *file)char tem60;time_t t=time(0); /初始化日歷時(shí)間strftime(da
5、tetime,sizeof(datetime),%y/%m/%d %*,localtime(&t);/將時(shí)間格式化strcat(log,datetime);/將時(shí)間寫入記錄/將字符串格式化bzero(&tem,sizeof(tem);if(a=1)sprintf(tem, 收到來(lái)自 %s 上傳文件 %s 的請(qǐng)求。n,inet_ntoa(sin-sin_addr),file);if(a=2)sprintf(tem, %s 上傳文件 %s 完畢。n,inet_ntoa(sin-sin_addr),file);if(a=3)sprintf(tem, 收到來(lái)自 %s 下載文件 %s的請(qǐng)求。n,inet
6、_ntoa(sin-sin_addr),file);if(a=4)sprintf(tem, %s 下載文件 %s 完畢。n,inet_ntoa(sin-sin_addr),file);if(a=5)sprintf(tem, 出現(xiàn)出錯(cuò),操作中斷。n,inet_ntoa(sin-sin_addr),file);/將具體信息寫入記錄strcat(log,tem);FILE *write;if(write=fopen(log.t*t,a+)=NULL)printf(翻開(kāi)記錄文件失敗n);/將記錄寫入文件fwrite(&log,strlen(log),1,write);fclose(write);bze
7、ro(&log,sizeof(log);加密解密實(shí)現(xiàn)#include#include#includeint decrypt(FILE *in,FILE *out);int encrypt(FILE *in,FILE *out);unsigned char atoh(char *he*str);int encrypt(FILE *in,FILE *out)if(in = NULL | out = NULL)fprintf(stderr,%sn,file error!n);return -1;unsigned char he*;while(fread(&he*,1,1,in)he* = he*0*
8、98;fprintf(out,%02*,he*);return 0;int decrypt(FILE *in,FILE *out)if(in = NULL | out = NULL)fprintf(stderr,%sn,file error!);return -1;unsigned char he*str3;unsigned char he* = 0;int i = 0;while(fread(he*str,2,1,in)he* = atoh(he*str);he* = (he* 0*98);fwrite(&he*,1,1,out);return 0;/* convert string to
9、he* */unsigned char atoh(char *he*str)int i;int he*todec=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15;char chtodec = 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F;unsigned char he*num = 0;for(i = 0; i sizeof(chtodec); +i)if(he*str0 = chtodeci)he*num += he*todeci*16;for(i = 0; i 65535)blocknum = 0;/最后一包if(ret TFTP_NOTEND
10、_DATALEN)/寫入文件fwrite(&recv_buffer4,1,ret-4,file);flen = flen + ret -4;#ifdef _DEBUG_printf(%s %s %dn, _FILE_, _FUNCTION_, _LINE_);printf(*傳輸完畢,共收到 %d 字節(jié)*n,flen);#endifrewind(file);if(decrypt_file =fopen(decrypt_temp,wb+)=NULL)printf(decrypt file open error n);return;decrypt(file, decrypt_file);fclose(decrypt_file);rename(decrypt_temp, filename);fclose(file);record(2,&sour_addr,filename);return;elsefwrite(&recv_buffer4,1,512,file);flen = flen + 512;#ifdef _DEBUG_printf(%s %s %dn, _FILE_, _FUNCTION_, _LINE_);printf(已收到 %d 字節(jié)n,flen);#endifelse/重新發(fā)送ACK包printf(數(shù)據(jù)包塊號(hào)錯(cuò)誤.n);sendto(sock
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年人工耳蝸行業(yè)政策分析:人工耳蝸行業(yè)標(biāo)準(zhǔn)推動(dòng)人工耳蝸技術(shù)普及
- 2025年個(gè)人三項(xiàng)機(jī)制學(xué)習(xí)心得體會(huì)模版(3篇)
- 課題申報(bào)參考:緊密型醫(yī)聯(lián)體視角下大灣區(qū)老年中醫(yī)藥服務(wù)評(píng)價(jià)體系構(gòu)建與實(shí)證研究
- 二零二五年度集團(tuán)高層管理人員任期制競(jìng)聘與續(xù)聘合同6篇
- 2025版小時(shí)工定期雇傭合同范本3篇
- 2025版土地征收及安置補(bǔ)償中介服務(wù)合同3篇
- 全新二零二五年度房地產(chǎn)銷售代理合同3篇
- 二零二五版企業(yè)內(nèi)部會(huì)計(jì)檔案安全保密服務(wù)協(xié)議3篇
- 2025年度文化創(chuàng)意產(chǎn)品開(kāi)發(fā)與銷售合作協(xié)議范本4篇
- 二零二五年度廚具品牌設(shè)計(jì)創(chuàng)新合同4篇
- 圖像識(shí)別領(lǐng)域自適應(yīng)技術(shù)-洞察分析
- 個(gè)體戶店鋪?zhàn)赓U合同
- 禮盒業(yè)務(wù)銷售方案
- 二十屆三中全會(huì)精神學(xué)習(xí)試題及答案(100題)
- 小學(xué)五年級(jí)英語(yǔ)閱讀理解(帶答案)
- 仁愛(ài)版初中英語(yǔ)單詞(按字母順序排版)
- 【奧運(yùn)會(huì)獎(jiǎng)牌榜預(yù)測(cè)建模實(shí)證探析12000字(論文)】
- 魯濱遜漂流記人物形象分析
- 危險(xiǎn)廢物貯存?zhèn)}庫(kù)建設(shè)標(biāo)準(zhǔn)
- 多層工業(yè)廠房主體結(jié)構(gòu)施工方案鋼筋混凝土結(jié)構(gòu)
- 救生艇筏、救助艇基本知識(shí)課件
評(píng)論
0/150
提交評(píng)論