2008-04-26

use socket to transfer files

作業目標:

實作能夠接受多個Client 的連線要求之socket程式。

利用fork(),瞭解執行緒運作流程。

利用fopen, SendFile, FileInputStream,將檔案封裝進packet透過socket傳送。

熟悉撰寫C語言程式與linux相關之操作。

作業成果:

提供client端上傳各種格式的檔案給server端,並可支援多人同時上傳。

功能設計:

client直接輸入指令,輸入server端的IP位址, 要傳送的檔名, port number,即可傳送。

編輯器:

VIM

Compiler:

gcc

執行環境:

Ubuntu 7.10

執行步驟:

1. server開啟等待接收檔案,注意該資料夾的狀態,此時資料夾並無圖檔。









2. client輸入server IP以及port number, 檔案名稱。本範例為傳送一企鵝圖檔。

3. server端開啟新的process,並且接收檔案完成。

4. 至該資料夾看看,圖檔已正確送達,增加了一個企鵝圖案。








5. 用圖片瀏覽器開啟看看。

作業環境桌面:












程式撰寫心得:

本次寫的是可多人連線的傳檔程式,但是過程中也發現,並不是每次傳檔都會100%成功,可能還要加一些比較詳密的應用層協定,例如FTP的協定,如此才能在不管檔案多大的狀態下,都能傳送完全,所以在撰寫程式後,自己也更瞭解socket傳檔的過程,藉由遇到可能發生的問題,進而思考出解決的辦法,期末的專題比賽也有用到傳檔的功能,所以也幫助我更加瞭解。

沒有留言: