Internet編程方式
Visual C++ 6.0支持的Internet編程有三種方式:
(1)WinInet,主要用來創建網際網路客戶端應用程式,使網際網路一與任何套用融為一個整體;
(2)ISAPI,用於編寫Web伺服器端的套用接口,實現Web伺服器一與客戶端瀏覽器的數據交換以及基於Web的網路套用;
(3)Windows Socks 2,直接使用網路協定接口,需要對網路協定細節有一定的了解,編寫一些網路伺服器軟體時需要使用。
Internet編程概述
代碼和語言
網路編程代碼主要分為靜態代碼與動態代碼兩種,靜態代碼主要是伺服器不解析直接傳送給客戶端的部分,用做布局效果,一般不用於資料庫操作;而動態代碼主要伺服器需要解析的部分,用作資料庫連線操作等。常見的程式語言有php、jsp、asp這幾種語言。
模型
網路模型主要是用與描述網路的結構原理和工作原理,網路模型則分為OSI參考的模型與Internet網路模型兩種,OSI網路模型與Internet模型最大區別就是OSI模型為七層網路結構,而Internet模型為四層結構,而網路協定用於指定層上進行的數據交換的規則,Internet的網路層協定的主要是以IP協定為主、DNS協定為輔,而Internet傳輸層協定則是TCP協定和UDP協定。
套接字
套接字主要的用於程式編碼中操作,而套接字則是的應用程式與網路協定的接口,不同類型的程式的套接字是不同的,例如java socket主要是用於java應用程式與網路協定的接口,提供若干個類定義,java套用的利用繼承網路協定的方式實現java程式的網路通信。
數據包
數據包也稱為組裝包,指在套用層數據或報文按照一定事先規定好的規則整合的數據集合,實際操作包括組包(打包),數據包傳送,解包。數據包通過協定將數據進行組合起來,但是在實際的套用中,例如在C++編程中,通過定義一種新的數據類型的用於存儲新的數據包結構,之後通過的電氣物理傳輸將數據包傳輸出去,而接收端則需要對接收到的數據包進行的解析,以獲取需要的信息以及數據。
socket套接字
Socket套接字主要是用於描述IP位址與連線埠,作為一個通信鏈的句柄,其目的在於實現不同計算機設備直接的網路通信。在主機上一般都是運行了多個軟體,可以同時提供多種服務,所以每一種服務都會打開一個socket並綁定到連線埠上,使得不同的連線埠能夠對應不同的服務內容。Socket連線過程中主要可以分為服務期監聽、客戶端請求以及連線確定等三個步驟:
(1)伺服器監聽:用於監聽伺服器是否處於等待連線狀態進行監控的網路狀態;
(2)客戶端請求,向客戶端的套接字傳送連線請求;所以客戶端套接字必須要描述它所要連線的伺服器套接字,指出相應的伺服器套接字地址與連線埠號後,向伺服器端傳送連線請求;
(3)連線確定:當伺服器端收到了客戶端套接字所傳送的連線請求,為回響客戶端套接字,需要建立一個新的執行緒並把伺服器端套接字的地址與連線埠號傳送給客戶端,當客戶端確定之後,便建立的連線。
WinInet
簡介
國際網際網路客戶端套用是一種應用程式,它使用諸如HTTP、FTP等國際網際網路協定,訪問來自一個網路數據源 (伺服器)的信息。微軟的Win 32 Internet編程接口可以使應用程式與Internet融為一體。WININET.DLL中包含了這些新的功能,提供了HTTP、FTP和Gopher等協定支持,用戶可以通過WinInet下載HTML頁面,傳送FTP請求,使用Gopher的選單系統來訪問Internet上的資源。
Visual C++的WinInet支持類庫提供了一條高速簡捷的途徑來生成網路套用,這些類庫將HTTP、FTP和Gopher等協定抽象成一個高層的套用編程接口。通過該類庫使用WinInet函式的功能更為便利,因為它們為用戶做了所有工作。
建立WinInet類應用程式的一般步驟
MFC提供了很多編寫Internet客戶端應用程式的類庫和全局函式,其中有些類是從其它類派生出來的,例如CHttpFile從CInternetFile派生而來。圖1為使用WinInet類庫創建一個典型的HTTP客戶端套用的步驟,圖2為使用WinInet類庫創建一個典型的FTP客戶端套用的步驟。