作者chchwy (mat)
看板NTUE-CS102
標題Re: [閒聊] 程設作業
時間Wed Jun 15 17:37:04 2011
同場加映,怎麼寫 get/put
先講講概念性的東西,照理說會寫 dir/ldir 就會寫 get/put
因為說到底,一個檔案也不過就是一坨bytes,只是這坨bytes可能很大一坨。
所以一個字串是不是一坨bytes? 你會傳字串的話,傳一個檔案行不行呢?
socket的本質就是把一坨byte從網路的一頭塞到另一頭去而已,對吧。
比方說,現在使用者下了一個指令 get hotgirl.avi
他想要從遠端的server抓這個檔案下來
整體來看get指令的流程
Server Client
1. 讀入指令 (get hotgirl.avi)
2. 將指令送給server
<---
3. 接收指令
4. 打開 hotgirl.avi 檔案
5. 把 hotgirl.avi 的檔案內容全寫進socket
---->
6. 接收server傳過來的結果
7. 開一個新檔案 hotgirl.avi
8. 把接收到的內容寫進新檔案
整個流程都跟其他指令一漾,
唯一的差別,是關於檔案操作的部分。
授人以魚不如受人以漁,寫c/c++不能不逛這個站。
http://www.cplusplus.com/reference/clibrary/cstdio/fread/
連結裡的範例程式
就是教你怎麼把整個檔案的內容搬進一個char array裡,
簡單講就是去弄懂fread()這個函數的用法。
那接下來server端要怎麼樣把這個 char array 寫進socket?
跟送字串一樣。
client 要怎麼收這一大坨char array?
跟收字串一樣。
字串長度變變成檔案長度。
收下來的字串原本要打印到螢幕上,現在改成寫進硬碟。
(怎麼寫檔,可以查查fwrite() )
===以下是有點機歪的廢話===
寫不出作業推給"老師教不好"跟"大家都不會寫"
真是最爛的兩個理由了。
有很多事情不管老師教得好不好,都應該要會,
這算是對自己能力負起責任。
過錯全推給老師,世界照常運轉,老師照常領薪水,
只有不會的人...還是不會,誰管你。
當初這一系列ftp文,
也是我自己念 Unix Network Programming 原文書前五章總結出來的。
然後 "大家都不會寫" 更好笑,
你眼裡的"大家"樣本是多大? 國北資科的30人? 台灣的資X系?
要不要看看這本課本多少學校在用?
游老師的課不輕鬆,但是作業其實都在合理難度範圍內,多加油吧。
其實我一直期待有一天能被被超強學弟妹打趴阿 !!!
--
---- chchwy <批兔個人版> ptt2.cc
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.45.107.75
※ 編輯: chchwy 來自: 114.45.107.75 (06/15 17:42)
1F:推 WAYS22275:建中哥必推 06/15 17:55
2F:推 pk873:推強者我學長 06/15 18:12
3F:推 Markseinn:拜一下 06/15 20:00
4F:推 FSRS:好文推 06/15 20:12
※ 編輯: chchwy 來自: 140.115.158.103 (06/16 21:27)
5F:推 jerry771210:有神快拜!! 06/17 09:12