ImageVerifierCode 换一换
格式:DOCX , 页数:8 ,大小:44.50KB ,
资源ID:5330044      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5330044.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(FTP文件传输客户端程序报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

FTP文件传输客户端程序报告.docx

1、FTP文件传输客户端程序报告 File Transfer Protocol Client Progam X1002127 劉凱1、Program execution result: 程序會提示輸入資料名稱,輸入名稱之後,程序自動建立連接并發送命令,依次輸出收到的回信。下圖即為收到的回信:其中前兩條是歡迎信息,需要兩個recv函數接收。2、 Program Features: a. 分為一個主函數和5個小函數執行。 Main: 建立socket,調用filename和file_transfer。 Filename:輸入資料名稱,設置STOR命令。File_transfer:發送命令并傳送資料,c

2、ommand、port和send_file。Command:發送命令、接收并打印回信。Port:計算Port Y。File_transfer發送PASV命令之後調用。Send_file:打開傳送資料。函數調用關係如下圖: 程式代碼層次分明,易於閱讀和修改。b. 執行時僅需輸入需要傳送的資料名稱。 主函數調用Filename,提示輸入資料名稱,根據資料名稱設置STOR命令(即在資料名稱之前加“STOR”,之後加“rn”)。 然後主函數建立指令連接,調用File_transfer進行Client端的主要操作。 File_transfer中調用Command直接發送命令,無須輸入命令字符串。程序執行

3、簡單,易於操作。c.Name Resolution 程式調用gethostbyname獲取伺服器IP地址。根據地址去連接伺服器。相關代碼如下:struct hostent *server;server=gethostbyname(cramer.ee.nthu.edu.tw);獲取。servaddr1.sin_addr=*(struct in_addr *)server-h_addr);將連接到servaddr2.sin_addr=*(struct in_addr *)server-h_addr); 有進行Name Resolution。3. Source code# include# incl

4、ude# include# include# include# include# define MAXLEN 1024/PS: 執行時僅需輸入要傳送的資料名稱即可,程序會自動發送命令并輸出來自服務器的回信。 / 這些變量在多個函數中需要使用,因此定義在程序開頭。char RcvBufMAXLEN; int n; SOCKET a,b; / a用於建立連線,b用於傳送資料。 SOCKADDR_IN servaddr1,servaddr2;char name30,stor30=STOR ; / command用於向FTP服務器發送命令,然後接收回信并打印出來。int command(char *m

5、essage) send(a, message, strlen(message), 0); n=recv(a, RcvBuf, MAXLEN, 0); RcvBufn=0; / 在接收緩衝區的末尾加字符串結束符號。 printf(%snn, RcvBuf); / 發送PSAV命令之後,port將收到的信息中的port y轉換為整數。 如接收“227 Entering Passive Mode (140,114,26,104,68,245)”,則p1=245,p2=68。int port() int i=0, j=0, k=0, p, p1=0, p2=0; while(RcvBufi!=) i

6、+; / 用while找到右括號,然後依次求p1、p2,從右往左進行計算。 for(i=i-1;j1;i-) /計算p1 if(RcvBufi=,) j+; else p=RcvBufi-0; / 將字符轉化為數字. p1=p1+pow(10,k)*p; k+; k=0; for(;j2;i-) /計算p2 if(RcvBufi=,) j+; else p=RcvBufi-0; p2=p2+pow(10,k)*p; k+; return p=p1+p2*256; / 傳送資料的連接建立之後,用於發送資料。int send_file() char SendBufMAXLEN; FILE *p;

7、int FileSize; p=fopen(name, rb); /打開資料。 fseek(p, 0L, SEEK_END); FileSize=ftell(p); /用fseek和ftell計算資料大小。 fread(SendBuf, FileSize, 1, p); /將要發送的資料寫入發送緩衝區。 fclose(p); send(b, SendBuf, FileSize, 0); closesocket(b); /發送文件之後應及時關閉資料連接,不然收不到“226.。 return 0; /主函數調用此函數進行Client端的主要操作。 int file_transfer() int p

8、ort_y,i=0; while(ih_addr); /將gethostbyname返回的ip信息連接到socket. servaddr2.sin_family=AF_INET; servaddr2.sin_addr=*(struct in_addr *)server-h_addr); filename(); /用於輸入名稱,并設置STOR命令。 connect(a, (SOCKADDR*)&servaddr1,sizeof(servaddr1); file_transfer(); /調用file_transfer完成client端的操作。 closesocket(a); WSACleanup(); system(pause); return 0;/PS: 執行時僅需輸入要傳送的資料名稱即可,程序會自動發送命令并輸出來自服務器的回信。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1