示範一個功能: 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)