作者chchwy (mat)
看板NTUE-CS100
标题Re: [课业] ftp两三事
时间Thu Jun 4 03:19:29 2009
示范一个功能: dir
dir指令会列出server目前所有可以下载的档案。
如果使用者从键盘敲入dir这个指令
依照我们的程式结构,server跟client应该会分别进入下面两个函式
serv_dir() , cli_dir()
写socket程式,最重要的事情就是两边配合,一端写另一边读。
serv_dir(){ cli_dir(){
1.准备好资料
2.写过去client ----> 1.收下资料
2.印在银幕上
} }
实际程式 Server端
===================================
#include <dirent.h> //记得加这行
void serv_dir(int sockfd){
char data[4096] = {0}; //这是要写给client的资料(一个很大的字串)
//用oepndir()跟readdir()配合回圈
//就可以抓出所有目录下的档案
DIR * dir;
struct dirent * ptr;
dir =opendir(".");
while((ptr = readdir(dir))!=NULL) { //依次读取档名
//ptr->d_name就是档名
strcat( data, ptr->d_name); //附加到data字串後面
strcat( data, "\n" );
}
closedir(dir);
//将这一大串字写过去client
writeString( sockfd, data );
}
另一头的client端
=================================
void cli_dir( int sockfd ){
char data[4096];
readString(sockfd, data ); //从server读字串
printf("这是所有可以下载的档案\n");
printf("======================\n");
printf("%s", data); //将接收到的字串输出到银幕上
}
这样应该大概有个概念了吧?
网路程式不难,就是一收一送,两边讲好後互相传送资料而已。
--
夜精小德
Char - 巨龙之喉 (前
月神殿) PvP
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.68.15.209
※ 编辑: chchwy 来自: 203.68.15.209 (06/04 03:25)