幾種傳輸協議大家都應該了解,比如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...