精華區beta NTUE-CS100 關於我們 聯絡資訊
示範一個功能: 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)