![第十章 TCP_IP和網(wǎng)絡(luò)通信_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/7/cff82742-a830-4c8c-978a-78e114c00c64/cff82742-a830-4c8c-978a-78e114c00c641.gif)
![第十章 TCP_IP和網(wǎng)絡(luò)通信_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/7/cff82742-a830-4c8c-978a-78e114c00c64/cff82742-a830-4c8c-978a-78e114c00c642.gif)
![第十章 TCP_IP和網(wǎng)絡(luò)通信_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/7/cff82742-a830-4c8c-978a-78e114c00c64/cff82742-a830-4c8c-978a-78e114c00c643.gif)
![第十章 TCP_IP和網(wǎng)絡(luò)通信_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/7/cff82742-a830-4c8c-978a-78e114c00c64/cff82742-a830-4c8c-978a-78e114c00c644.gif)
![第十章 TCP_IP和網(wǎng)絡(luò)通信_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/7/cff82742-a830-4c8c-978a-78e114c00c64/cff82742-a830-4c8c-978a-78e114c00c645.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、1第第1010章章TCP/IPTCP/IP和網(wǎng)絡(luò)通信和網(wǎng)絡(luò)通信2網(wǎng)絡(luò)基礎(chǔ)知識n以太網(wǎng)的最底層是硬件層,稱為介質(zhì)訪問控制(Media Access Control,MAC)層n硬件層之上是IP( Internet Protocol,網(wǎng)絡(luò)協(xié)議)層 ,與MAC 層相似,IP層有它自已的尋址方式使用IP地址。n IP層之上是TCP層(或者UDP層)。這層距離網(wǎng)絡(luò)應(yīng)用程序非常近,要做的事情很多nTCP為尋址增加了最后一個限制端口號nTCP層之上是網(wǎng)絡(luò)軟件3以太網(wǎng)接口堆棧以太網(wǎng)接口堆棧4服務(wù)器服務(wù)器/客戶機模型客戶機模型nTCPTCPIPIP是面向連接的協(xié)議是面向連接的協(xié)議 n客戶是發(fā)出請求方,服務(wù)器響應(yīng)
2、它們客戶是發(fā)出請求方,服務(wù)器響應(yīng)它們n服務(wù)器通常是等待客戶連接服務(wù)器通常是等待客戶連接, , 這叫做監(jiān)聽這叫做監(jiān)聽(listening)(listening),n服務(wù)器和客戶方都需要使用服務(wù)器和客戶方都需要使用IPIP地址和端口號,但是服地址和端口號,但是服務(wù)器的務(wù)器的IPIP地址和端口號通常是固定的地址和端口號通常是固定的nWWWWWW的標(biāo)準端口號是的標(biāo)準端口號是 80(80(使用使用HTTPHTTP協(xié)議)協(xié)議)n工作在軟件層的幾個協(xié)議,如工作在軟件層的幾個協(xié)議,如HTTPHTTP、FTPFTP、POP3POP3、SMTPSMTP等,大多數(shù)是以服務(wù)器等,大多數(shù)是以服務(wù)器/ /客戶機方式工作的
3、。客戶機方式工作的。n例如,客戶產(chǎn)生請求,服務(wù)器響應(yīng)。請求和響應(yīng)數(shù)據(jù)例如,客戶產(chǎn)生請求,服務(wù)器響應(yīng)。請求和響應(yīng)數(shù)據(jù)的準確格式由這些協(xié)議定義。的準確格式由這些協(xié)議定義。5Winsock Interfacen套接字(Socket)通訊雙方要建立連接,連接的終端是套接字(接口)服務(wù)器和客戶端都有相應(yīng)的套接字,與IP地址及端口號相關(guān)聯(lián)n所有Winsock函數(shù)都是在套接字上操作連接的兩端都要使用一個套接字,且與平臺無關(guān)(Windows系統(tǒng)與Unix系統(tǒng)可通過套接字相連)n套接字有兩類:n流套接字(SOCK_STREAM)n數(shù)據(jù)報套接字(SOCK_DGRAM)n流套接字是TCP協(xié)議類,是可靠連接的;數(shù)據(jù)報
4、套接字是使用UPD為下層協(xié)議,是無連接的6Winsock 的尋址方式及字節(jié)順序n尋址方式:TCP/IP使用IP地址和端口號來指定地址,使用如下結(jié)構(gòu):n 描述32位IP地址的in_addr結(jié)構(gòu):struct union structu_char s_b1,s_b2,s_b3,s_b4;S_un_b; structu_short s_w1,s_w2;S_un_w; u_long S_addr; S_un;Struct sockaddr u_short sa_family; char sa_data14;n TCP/IP版本Struct sockaddr_in short sin_family; u
5、_short sin_port; struct in_adr sin_addr; char sin_zero8;7Winsock 的尋址方式及字節(jié)順序n字節(jié)順序8Winsock 的尋址方式及字節(jié)順序n使用舉例9Winsock編程流程nWinsock庫的裝入與初始化及釋放10Winsock編程流程n套接字的創(chuàng)建與關(guān)閉11Winsock編程流程n綁定套接字到指定的IP地址及端口號12Winsock編程流程n設(shè)置套接字進入監(jiān)聽狀態(tài)13Winsock編程流程n接受連接請求14Winsock編程流程n收發(fā)數(shù)據(jù)15Winsock編程流程n應(yīng)用舉例16 Internet Internet應(yīng)用程序開發(fā)的幾種類
6、型應(yīng)用程序開發(fā)的幾種類型 使用使用WinInetWinInet類開發(fā)類開發(fā)InternetInternet應(yīng)用程序:應(yīng)用程序:WinInetWinInet類類支持支持HTTPHTTP、FTPFTP和和GopherGopher等標(biāo)準的協(xié)議等標(biāo)準的協(xié)議 使用使用Windows SocketWindows Socket開發(fā)開發(fā)InternetInternet應(yīng)用程序:應(yīng)用程序:WinsockWinsock標(biāo)準定義了一個標(biāo)準定義了一個DLLDLL接口來連接接口來連接InternetInternet,MFCMFC使用使用CAsyncSocketCAsyncSocket和和CSocketCSocket類對
7、接口進行了封類對接口進行了封裝。裝。使用消息收發(fā)使用消息收發(fā)API(MAPIAPI(MAPI:Message API) Message API) 開發(fā)開發(fā)InternetInternet應(yīng)用程序應(yīng)用程序:使用使用MAPIMAPI可以很方便的向其他可以很方便的向其他應(yīng)用程序發(fā)送電子郵件、語音郵件或傳真等功能應(yīng)用程序發(fā)送電子郵件、語音郵件或傳真等功能 17面向連接的流方式調(diào)用過程Server調(diào)用調(diào)用WSAStartup( )初始化初始化Winsock調(diào)用調(diào)用socket( )創(chuàng)建一個監(jiān)聽創(chuàng)建一個監(jiān)聽Socket調(diào)用調(diào)用bind( )為監(jiān)聽為監(jiān)聽Socket指定通訊對象指定通訊對象調(diào)用調(diào)用liste
8、n( )設(shè)置等待連接狀態(tài)設(shè)置等待連接狀態(tài)調(diào)用調(diào)用accept( )接收連接并生成會話接收連接并生成會話socket調(diào)用調(diào)用send和和recv進行對話進行對話Closesocket( )關(guān)閉關(guān)閉socket18Client調(diào)用調(diào)用WSAStartup( )初始化初始化Winsock調(diào)用調(diào)用socket( )創(chuàng)建一個會話創(chuàng)建一個會話Socket調(diào)用調(diào)用connect( )和和server端連接端連接調(diào)用調(diào)用send和和recv進行對話進行對話Closesocket( )關(guān)閉關(guān)閉socket面向連接TCP/IP的流方式調(diào)用過程19面向無連接UPD的數(shù)據(jù)報調(diào)用過程調(diào)用調(diào)用WSAStartup( )初
9、始初始化化Winsock調(diào)用調(diào)用socket( )創(chuàng)建一個會創(chuàng)建一個會話話Socket調(diào)用調(diào)用sendto和和recvfrom進進行通訊行通訊Closesocket( )關(guān)閉關(guān)閉socket調(diào)用調(diào)用WSAStartup( )初始初始化化Winsock調(diào)用調(diào)用socket( )創(chuàng)建一個會創(chuàng)建一個會話話Socket調(diào)用調(diào)用sendto和和recvfrom進進行對話通訊行對話通訊Closesocket( )關(guān)閉關(guān)閉socket20 WinSockWinSock編程編程隱藏協(xié)議細節(jié),簡化編程:隱藏協(xié)議細節(jié),簡化編程:可不必深入了解協(xié)議,而使用可不必深入了解協(xié)議,而使用WinSocketWinSocke
10、t編程,需理解網(wǎng)絡(luò)通信及協(xié)議基本原理編程,需理解網(wǎng)絡(luò)通信及協(xié)議基本原理 熟悉的編程接口:熟悉的編程接口:WinInet APIWinInet API函數(shù)和很多函數(shù)和很多WinAPIWinAPI函數(shù)很相似,函數(shù)很相似,這對有編程經(jīng)驗的程序員來說是很方便的。這對有編程經(jīng)驗的程序員來說是很方便的。穩(wěn)定性好,不要求程序與底層直接聯(lián)系穩(wěn)定性好,不要求程序與底層直接聯(lián)系:WinInetWinInet隱藏了協(xié)議隱藏了協(xié)議的具體細節(jié),使得程序不必直接使用各種協(xié)議的具體細節(jié),使得程序不必直接使用各種協(xié)議支持數(shù)據(jù)緩存:支持數(shù)據(jù)緩存:WinInetWinInet函數(shù)為所有的協(xié)議提供緩存能力,程函數(shù)為所有的協(xié)議提供緩
11、存能力,程序員只需關(guān)心數(shù)據(jù)而不用去管理數(shù)據(jù)緩存序員只需關(guān)心數(shù)據(jù)而不用去管理數(shù)據(jù)緩存 支持多線程:支持多線程:由于由于WinInetWinInet函數(shù)在內(nèi)部處理多線程的并發(fā)問題,函數(shù)在內(nèi)部處理多線程的并發(fā)問題,因此因此WinInetWinInet函數(shù)支持多線程,在多線程中可以調(diào)用各種函數(shù)支持多線程,在多線程中可以調(diào)用各種WinInetWinInet函數(shù)而不用擔(dān)心發(fā)生問題或死鎖函數(shù)而不用擔(dān)心發(fā)生問題或死鎖 21 WinInet WinInet類介紹類介紹 WinInetWinInet類是一個總稱,分為四組類是一個總稱,分為四組nCInternetSessionCInternetSession類類n
12、CInternetConnection (CInternetConnection (連接類連接類) )nCFileFindCFileFind類類(Internet(Internet文件查找類文件查找類) )nCInternetFileCInternetFile類和類和CGopherLocatorCGopherLocator類類 22CInternetSessionCInternetSession類類 nCInternetSessionCInternetSession類直接繼承自類直接繼承自CObjectCObject類類n類用來建立與某個類用來建立與某個InternetInternet服務(wù)器的
13、會話。服務(wù)器的會話。n可以向代理服務(wù)器描述連接可以向代理服務(wù)器描述連接n如果應(yīng)用程序所使用的如果應(yīng)用程序所使用的InternetInternet連接必須保連接必須保持一段時間,則可以在持一段時間,則可以在CWinAppCWinApp類中創(chuàng)建相類中創(chuàng)建相應(yīng)的應(yīng)的CInternetSessionCInternetSession成員成員 23CInternetSessionCInternetSession類成員函數(shù)類成員函數(shù)QueryOption提供一個可能的錯誤檢測判斷提供一個可能的錯誤檢測判斷SetOption設(shè)置設(shè)置Internet會話的選項會話的選項OpenURL設(shè)置設(shè)置URL,并對其進行分
14、析,并對其進行分析GetFtpConnection打開一個打開一個FTP會話并進行連接會話并進行連接GetHttpConnection打開打開HTTP服務(wù)器并進行連接服務(wù)器并進行連接GetGopherConnection 打開打開Gopher服務(wù)器并進行連接服務(wù)器并進行連接EnableStatusCallback 建立異步操作的狀態(tài)回調(diào)建立異步操作的狀態(tài)回調(diào)ServiceTypeFromHandle通過通過Internet句柄返回服務(wù)器類型句柄返回服務(wù)器類型GetContext獲取獲取Internet和應(yīng)用程序會話句柄和應(yīng)用程序會話句柄Close關(guān)閉關(guān)閉Internet連接連接24 CInte
15、rnetConnection CInternetConnection類類 n包括包括CInternetConnectionCInternetConnection類及其派生類類及其派生類CHttpConnectionCHttpConnection、CFtpConnectionCFtpConnection和和CGopherConnectionCGopherConnection類類 n這些類幫助用戶管理與這些類幫助用戶管理與InternetInternet服務(wù)器的連服務(wù)器的連接,同時還提供一些函數(shù)完成和響應(yīng)服務(wù)器接,同時還提供一些函數(shù)完成和響應(yīng)服務(wù)器的通信的通信 25連接類及其派生類連接類及其派生類
16、CInternetConnectionCInternetConnection:用于管理與用于管理與InternetInternet服務(wù)服務(wù)器的連接器的連接CFtpConnectionCFtpConnection:用于管理與用于管理與FTPFTP服務(wù)器的連接,服務(wù)器的連接,可以對服務(wù)器上的文件和目錄進行直接操作可以對服務(wù)器上的文件和目錄進行直接操作CGopherConnectionCGopherConnection:管理與管理與GopherGopher服務(wù)器的連接服務(wù)器的連接CHttpConnectionCHttpConnection:管理與管理與HTTPHTTP服務(wù)器的連接服務(wù)器的連接26 C
17、InternetFile CInternetFile類類 n包括包括CInternetFileCInternetFile類及其派生類類及其派生類CHttpFileCHttpFile、CGopherFileCGopherFile。n這些類實現(xiàn)對遠程系統(tǒng)上的文件的存取工作。這些類實現(xiàn)對遠程系統(tǒng)上的文件的存取工作。n文 件 類 還 包 含文 件 類 還 包 含 C F i l e F i n dC F i l e F i n d 類 及 其 派 生 類類 及 其 派 生 類CFtpFileFindCFtpFileFind、CGopherFileFindCGopherFileFind類。類。CFile
18、FindCFileFind類直接繼承于類直接繼承于CObjectCObject類類n這些類實現(xiàn)對本地和遠程系統(tǒng)上的文件的搜索和這些類實現(xiàn)對本地和遠程系統(tǒng)上的文件的搜索和定位工作。定位工作。 27文件類說明文件類說明CInternetFile:CInternetFile:允許對使用允許對使用InternetInternet協(xié)議的遠程協(xié)議的遠程系統(tǒng)中的文件進行操作系統(tǒng)中的文件進行操作CGopherFile:CGopherFile:為在為在GopherGopher服務(wù)器上進行文件檢索服務(wù)器上進行文件檢索和讀取操作提供支持和讀取操作提供支持CHttpFile:CHttpFile:提供對提供對HTTPH
19、TTP服務(wù)器上的文件進行操作服務(wù)器上的文件進行操作的支持的支持CFindFile:CFindFile:文文件檢索提供支持文文件檢索提供支持CFtpFileFind:CFtpFileFind:為在為在FTPFTP服務(wù)器上進行的文件檢索服務(wù)器上進行的文件檢索操作提供支持操作提供支持CGopherFileFind:CGopherFileFind:為在為在GopherGopher服務(wù)器上進行的文服務(wù)器上進行的文件檢索操作提供支持件檢索操作提供支持28 CGopherLocator類類 在從在從GopherGopher服務(wù)器中獲取信息之前,服務(wù)器中獲取信息之前,必須先獲得該服務(wù)器的定位器,而必須先獲得該
20、服務(wù)器的定位器,而CGopherLocatorCGopherLocator類的主要功能就是從類的主要功能就是從GopherGopher服務(wù)器中得到定位并確定定位服務(wù)器中得到定位并確定定位器的類型。器的類型。29 WinInet WinInet類編程實例類編程實例 【例】利用【例】利用WinInetWinInet類編寫類編寫InternetInternet應(yīng)用程序。在應(yīng)用程序。在URLURL編編輯框中寫入地址,單擊輯框中寫入地址,單擊“Http”Http”、“Ftp”Ftp”或或“Gopher”Gopher”等按鈕可在編輯框中顯示查詢到的相應(yīng)服務(wù)器的信息等按鈕可在編輯框中顯示查詢到的相應(yīng)服務(wù)器的
21、信息 編輯框編輯框1IDC_EDIT_URL編輯框編輯框2IDC_EDIT_RESULT下壓式按鈕下壓式按鈕IDC_BUTTON_HTTP下壓式按鈕下壓式按鈕IDC_ BUTTON _FTP下壓式按鈕下壓式按鈕IDC_ BUTTON _GOPHER下壓式按鈕下壓式按鈕IDCANCEL靜態(tài)文本靜態(tài)文本IDC_STATIC組框組框IDC_STATIC30給界面對象連接接變量給界面對象連接接變量 31單擊單擊InsertInsertNew ClassNew Class菜單,添加新類類名為菜單,添加新類類名為CMyWinInetClassCMyWinInetClass,系統(tǒng)會自動在項目中增加,系統(tǒng)會自
22、動在項目中增加MyWinInetClass.cppMyWinInetClass.cpp和和MyWinInetClass.hMyWinInetClass.h兩個文件兩個文件 給應(yīng)用程序增加一個自定義的類給應(yīng)用程序增加一個自定義的類32 在新加入的類中增加如下三個public的成員函數(shù),在頭文件MyWinInetClass.h中可看到這些函數(shù)。 CString ConnectFtp(const CString sUrl);/完成連接Ftp功能的函數(shù)CString ConnectHttp(const CString sUrl);/完成連接Http功能的函數(shù)CString ConnectGopher(
23、const CString sUrl);/完成連接Gopher功能的函數(shù)33 為了建立為了建立InternetInternet的會話,新增加的的會話,新增加的CmyWinInetClassCmyWinInetClass類中加入一個類中加入一個privateprivate型成員變量型成員變量m_sessionm_session:CInternetSession m_session;/CInternetSession m_session;/建立建立InternetInternet會話會話 由于在上面定義了一個由于在上面定義了一個CWinInetCWinInet類的對象,所以還需類的對象,所以還需
24、要在要在MyWinInetClass.hMyWinInetClass.h頭文件中加入如下代碼:頭文件中加入如下代碼: #include afxinet.h#include afxinet.h #include wininet.h #include wininet.h34為CMyWinInetClass類添加三個用于連接的成員函數(shù),它們分別是ConnectFtp、ConnectHttp和ConnectGopher。CString CMyWinInetClass:ConnectFtp(const CString sUrl) CString sResult;/存儲連接信息的字符串 CFtpConne
25、ction *Ftpconnection=NULL; sResult=; sResult=sResult+Trying to connect Ftp sites+sUrl+rn; Ftpconnection=m_session.GetFtpConnection(sUrl); /建立到Ftp服務(wù)器的連接35if(Ftpconnection) sResult=sResult+Connection established.rn; CString sCurDir; Ftpconnection-GetCurrentDirectory(sCurDir);/得到得到FtpFtp服務(wù)器的當(dāng)前目錄服務(wù)器的當(dāng)前目
26、錄 sResult=sResult+current directory is+sCurDir+rn; Ftpconnection-Close();/關(guān)閉連接關(guān)閉連接else sResult=sResult+There are some errors in finding this Ftp sites;return sResult; 36CString CMyWinInetClass:ConnectHttp(const CString sUrl) CString sResult; CInternetFile *hHttpFile=NULL; sResult=; sResult=sResult+T
27、rying to connect Http sites+sUrl+rn; hHttpFile=(CInternetFile *)m_session.OpenURL(sUrl); /得到文件指針得到文件指針 if(hHttpFile) sResult=sResult+Connection established.rn; CString sLine; while(hHttpFile-ReadString(sLine) /讀取讀取HttpHttp服務(wù)器上的內(nèi)容服務(wù)器上的內(nèi)容sResult=sResult+sLine+rn; hHttpFile-Close();/關(guān)閉連接關(guān)閉連接else sResul
28、t=sResult+There are some errors in finding this Http sites;return sResult; 37CString CMyWinInetClass:ConnectGopher(const CString sUrl) CString sResult; CInternetFile *hGopherFile=NULL; sResult=; sResult=sResult+Trying to connect Gopher sites+sUrl+rn; hGopherFile=(CInternetFile *)m_session.OpenURL(sUrl); /得到文件指針得到文件指針if(hGopherFile) sResult=sResult+Connection established.rn; CString sLine; while(hGopherFile-ReadStr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新人教版七年級數(shù)學(xué)上冊1.2.4《 絕對值》(第2課時)聽評課記錄1
- 七年級歷史下冊第三單元明清時期:統(tǒng)一多民族國家的鞏固與發(fā)展20清朝君主專制的強化聽課評課記錄(新人教版)
- 蘇科版數(shù)學(xué)八年級上冊1.3《探索三角形全等的條件》聽評課記錄6
- 八年級數(shù)學(xué)上冊 14.1 整式的乘法 14.1.4 整式的乘法 第3課時 多項式乘以多項式聽評課記錄 新人教版
- 湘教版數(shù)學(xué)七年級下冊4.4《平行線的判定方法1》聽評課記錄
- 五年級上冊數(shù)學(xué)聽評課記錄《1.1 精打細算》(2)-北師大版
- 湘教版數(shù)學(xué)九年級上冊《小結(jié)練習(xí)》聽評課記錄6
- 人民版道德與法治九年級下冊第一課第1課時《“地球村”形成了》聽課評課記錄
- 人教部編版歷史八年級下冊:第19課《社會生活的變遷》聽課評課記錄4
- 一年級《聽》評課記錄
- 股票基礎(chǔ)知識(入市必讀)-PPT
- eNSP簡介及操作課件
- 公文與公文寫作課件
- 車削成形面和表面修飾加工課件
- 運動技能學(xué)習(xí)與控制課件第七章運動技能的協(xié)調(diào)控制
- 節(jié)后復(fù)工吊籃驗收表格
- 基于振動信號的齒輪故障診斷方法研究
- 醫(yī)療器械分類目錄2002版
- DB11_T1713-2020 城市綜合管廊工程資料管理規(guī)程
- 氣管套管滑脫急救知識分享
- 壓縮空氣系統(tǒng)管道阻力計算
評論
0/150
提交評論