以瀏覽器訪問url為例子:
1、生成請求訊息
2、向dns伺服器查詢web伺服器ip位址
3、委託協議棧傳送訊息
這裡僅先介紹請求訊息,後續將介紹其他的內容
不同的url,其訪問目標不一樣,其寫法也不一樣
如:這些url雖然寫法不同,但是其開頭的文字如「http:」等都表示瀏覽器應當使用的訪問方法,表明訪問時使用的協議型別。
http協議:定義了客戶端和伺服器之間互動的訊息內容和步驟。
訪問url之後,瀏覽器需要先解析url,從而生成需要傳送給web伺服器的請求訊息,
根據http的規格, url包含下圖的幾種元素:
有時候,如果表示資料來源的路徑名缺失,伺服器怎麼知道要訪問哪個檔案呢?
其實,我們會在伺服器上事先設計好檔名省略時候的預設檔案。一般是index.html 或者default.html之類的 。
根據url解析完成後,我們得知了需要訪問的目標在**,之後,瀏覽器就會使用http協議來訪問web伺服器,在此之前,先了解一下http協議
http協議定義了客戶端和伺服器之間互動的訊息內容和步驟,首先客戶端想伺服器傳送請求訊息,請求訊息包括「對什麼」和「執行什麼操作」兩部分。
「對什麼」的部分稱之為uri(統一資源識別符號),一般來講uri的內容是乙個存放網頁資料的檔名或者乙個cgi程式的檔名。(ps: 實際上這個檔案在web
伺服器上未必真實存在,因為伺服器可以通過重寫規則對虛擬的uri進行對映)。
「執行怎樣的操作」的部分稱之為方法,典型的方法為get 和post方法,表示讀取uri所表示的資料,將客戶端傳入的資料傳送個uri所表示的程式,其他還有head,
options,put,delete,trace,connect等方法,不贅述
http協議的基本思路:
其中,請求訊息和響應訊息的具體格式如下:
請求行宣告了http方法和uri,告知web伺服器對什麼執行哪種操作
訊息頭為一些列的鍵值對,用來新增一些額外的附加資訊,諸如日期,支援的資料型別,是否快取等等。具體的頭字段就不一一列出,具體可自查。
請求訊息體則包含著客戶端想伺服器傳送的資料,例如post方法向伺服器傳送的網頁表單資料等。
狀態行表示了伺服器執行操作的結果
狀態碼 含義
1** 告知請求的處理進度和情況
2** 成功
3** 表示需要進一步操作
4** 客戶端錯誤
5** 伺服器錯誤
使用C 在應用程式間傳送訊息
摘要 說來說去,還是覺得api的功能是最強大的,但是.net fcl,mfc等對api的封裝之後也使得程式的開發變得更加容易。本模組的主要原理還是使用api,查詢指定型別,視窗文字的視窗物件,獲取該物件的指標。然後操作該物件。例項1 建立乙個c windows form應用程式,向視窗中新增乙個按鈕...
C 呼叫外部應用程式
呼叫外部程式 1先初始化要啟動的程序 processstartinfo 指定啟動程序時使用的一組值。processstartinfo startinfo new processstartinfo hh.exe decompile.2隱藏程序被啟動是的方式 startinfo.windowstyle ...
C 呼叫外部應用程式
演示說明 此示例演示如何用c 呼叫記事本程式 notepad.exe 主程式等待7秒鐘,如果使用者沒有關閉記事本程式,則主程式強制關閉。示例 using system using system.collections.generic using system.text 需要引用的命名空間。using...