socket編程一段小節——擷取檔案,線程,進程

來源:互聯網
上載者:User

 今天晚上趁了興頭把前端時間學的socket編程的代碼整理了下,簡單的例子,屬於socket編程入門級(本人正在學習中),感興趣的朋友可以下載看看。

:傳到CSDN的我的資源裡面去了http://download.csdn.net/source/1790488,不知道你們能下載不,要是有問題請留言。

本包中的例子在ubuntu9.04下使用gcc命令全部編譯通過,伺服器和用戶端均在本機上運行。若你使用的是windows系統下的VC編程,很遺憾,這些例子編譯可能無法通過,主要是因為庫檔案的不同造成。如果你真的對網路socket編程感興趣,建議你安裝linux環境,一份正版的ubuntu系統並不難獲得。
用戶端串連時採用./client 127.0.0.1。
關於程式原始碼,來自所學課本,我只是簡單的把它敲出來,希望能給沒有書籍資料的朋友一些協助。具體可參考《linux/unix網路編程》(中國水利水電出版社)。
下面是關於各個目錄中文檔的說明。
1.socket_message在socket_message中給出了用戶端向伺服器發送訊息的例子。沒有採用迴圈結構,發送一個訊息後用戶端就關閉連結並退出。
2.socket_file.tar在socket_file中給出了用戶端由伺服器擷取一個檔案的例子。
用戶端可按如下方式運行:./ctest 127.0.0.1 /home/user/test.txt >test
"/home/user/test.txt"代表test.txt的絕對路徑,">test"這句話表明獲得的結果輸出到test檔案中(用戶端所在目前的目錄下),若不加它,則擷取的檔案將直接顯示在終端介面上。
3.fock.tar關於多進程並發伺服器的例子。
為什麼用多進程,你可以嘗試運行例子1,開啟伺服器,看同時開啟多個用戶端進行message的傳遞,按照不同的順序試試。(只有當最先開啟的用戶端處理完,後面的message才能輸出顯示,而不管誰先發送的message)
在伺服器端顯示的是用戶端發送的原資訊,伺服器端將原資訊進行簡單的凱撒加密後送回用戶端顯示。
4.save.tar關於線程使用的例子(看到這你應該思考線程與進程的區別)
這裡讀者因該瞭解線程建立的一些函數及其使用,其中伺服器端源代中的void savedata(char* recvbuf,int len,char* cli_data)函數用於儲存用戶端發送的資訊。當用戶端結束後能把用戶端發送過的資訊顯示出來。(當然它可以用於在伺服器上儲存使用者通訊記錄,但需要完善改進。)
5.safe.tar這個例子是對於例子4的改進。例4中當有多個用戶端同時運行時,但其中一個用戶端退出,其資料可能無法顯示,這主要是伺服器代碼中的index這一靜態變數引起的(同一進程中所有線程共用相同的記憶體空間)。

另外在4、5例子中編譯請用如下格式:gcc -o test test.c -lpthead,因為pthread庫不是Linux系統預設的庫。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.