C 實現HTTP服務端客戶端通訊傳檔案

2021-09-24 17:19:33 字數 1806 閱讀 7140

幾種傳輸協議大家都應該了解,比如ftp檔案傳輸,socket傳輸,http相對這兩種比較簡單,根據需求來選擇傳輸協議,本人實習所作的專案,用http剛剛好,簡單方便又可以完成所有的需求,我需要不僅傳輸檔案還要傳輸指令,如果我選擇ftp傳輸檔案,會把其它內容包裝成檔案,反而很繁瑣,socket又比較複雜。綜上http是簡單實用的協議。

關於http的詳解,比如報文結構,狀態碼等請移步其它**,比如下方的教程,我認為可以滿足基本需求

服務端的主要負責響應客戶端發來的請求,伺服器收到客戶端發來的請求後會返回乙個http的響應訊息

以下是http的響應報文部分,關於響應的詳解,請看部落格一開始給出的連線

http的響應訊息主要分四部分:狀態行,訊息報頭,空行,響應正文

第一部分:狀態行,由http協議版本號, 狀態碼, 狀態訊息 三部分組成。

第一行為狀態行,(http/1.1)是http版本為1.1版本,狀態碼為200,狀態訊息(ok)

第二部分:訊息報頭,用來說明客戶端要使用的一些附加資訊

第二行和第三行為訊息報頭,

date:生成響應的日期和時間;content-type:指定了mime型別的html(text/html),編碼型別是utf-8

第三部分:空行,訊息報頭後面的空行是必須的

第四部分:響應正文,伺服器返回給客戶端的文字資訊

服務端用到的基礎類是httplistener,寫檔案的時候會用到streamwriter

服務端相應的**結構大概分為以下幾個部分

建立乙個http偵聽器物件並初始化httplistener listener = new httplistener();新增需要監聽的uri 字首:使用prefixes屬性來訪問集合

開始偵聽來自客戶端的請求 : listener.start();

處理客戶端的http請求,34迴圈處理以提供多客戶的多請求

關閉http偵聽器

服務端響應客戶端並傳送helloword的完整示例程式如下:

class

program

}class

debugsever

// 設定字首,必須以『/』結尾

;// 建立乙個http偵聽器物件

//foreach (string s in prefixes)

// listener.prefixes.

add(prefixes)

; listener.

start()

;//呼叫listener.start()實現埠的繫結,並開始監聽客戶端的需求

console.

writeline

("伺服器已經啟動,開始監聽.....\n");

while

(true

) listener.

stop()

;//關閉偵聽器,並釋放相關資源

}}

如果需要接收客戶端傳來的檔案,那麼寫了乙個接收檔案的類

class

filehelper

}

TCP通訊,多客戶端通訊(客戶端 服務端)

客戶端和伺服器間的交流,客戶端傳送資訊,伺服器接收到,並返回資訊 長連線建立socket連線服務端 指定ip位址,埠號 通過ip位址找對應的伺服器 呼叫socket的getinputstream 和getoutputstream 方法獲取和服務端相連的io流 輸入流可以讀取服務端輸出流寫出的資料 輸...

服務端 客戶端Socket通訊

服務端 using system using system.collections.generic using system.net using system.net.sockets using system.text using system.text.regularexpressions usi...

客戶端服務端通訊protocol

這個協議不知我在上面耗費了多長時間,也有人問過我咋回事,這個protocol不長,但對於我來說理解起來很費勁,今天回來看看忽然看懂了 80 只能說不知看了多少遍 其實這些東西應該在來的乙個月這樣子都要會的,一直拖到現在,其實那時時真心看不懂 ifndef protocol base h define...