freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

第10章160網(wǎng)絡(luò)程序設(shè)計(jì)實(shí)例(參考版)

2024-10-11 16:13本頁(yè)面
  

【正文】 下面是在頭文件 IP和 ICMP協(xié)議頭的結(jié)構(gòu) 。 WaitForEchoReply(?)和其他幾個(gè)函數(shù)的定義比較簡(jiǎn)單 。 (6) 關(guān)閉原始套接口 。 (4) 控制 Ping程序進(jìn)行 4次發(fā)送與接收的測(cè)試 (發(fā)送和接收分別使用 SendEchoRequest(?) 和WaitForEchoReply(?)函數(shù)來(lái)完成 )。 (2) 根據(jù)主機(jī)名查詢(xún)主機(jī)地址 。 (5) 釋放 Winsock協(xié)議棧 。 (3) 在主程序中初始化 Winsock 協(xié)議棧 ( 使用WSAStartup(?)函數(shù) )。 第 10章 網(wǎng)絡(luò)程序設(shè)計(jì)實(shí)例 原始套接口程序設(shè)計(jì)實(shí)例 具體 Ping程序的實(shí)現(xiàn)步驟如下: (1) 定義 IP和 ICMP協(xié)議頭 。 在 SOCK_RAW套接口創(chuàng)建完成后 , 就可以進(jìn)行數(shù)據(jù)的發(fā)送和接收了 , 只是 IP數(shù)據(jù)報(bào)頭會(huì)包含在收到的數(shù)據(jù)中 。 //也可以使用如下的代碼 s=WSASocket(AF_INET,SOCK_RAW,IPPROTO_ICMP,NULL,0,WSA_FLAG_ ?OVERLAPPED)。 創(chuàng)建一個(gè)SOCK_RAW套接口的典型代碼如下: 第 10章 網(wǎng)絡(luò)程序設(shè)計(jì)實(shí)例 …… SOCKET s。 原始套接口只能使用 SOCK_RAW套接口類(lèi)型來(lái)創(chuàng)建 。 } 重新編譯程序 , 現(xiàn)在 , 我們可以對(duì)結(jié)尾為 .的域進(jìn)行 WHOIS查詢(xún)了 。 UpdateData(FALSE)。 第 10章 網(wǎng)絡(luò)程序設(shè)計(jì)實(shí)例 現(xiàn)在 , 給 IDC_BUTTON_WHOIS按鈕鏈接單擊消息的處理函數(shù) , 并編寫(xiě)如下代碼: void CScanDlg::OnButtonWhois(?) { UpdateData(TRUE)。隨后,建立一個(gè) Gopher位置來(lái)查詢(xún)用戶(hù)輸入的域:CGopherLocator locator = connectionCreateLocator(NULL, host, GOPHER_TYPE_TEXT_FILE),由于鏈接的域?yàn)?,所以本函?shù)只能查詢(xún)結(jié)尾為 .的域。 UpdateData(FALSE)。 \r\n。 delete connection。 \r\n。 delete file。 i++) { m_out += line + \r\n。amp。 for (int i=0。 pExDelete(?)。 try { file = connectionOpenFile(locator)。 CGopherLocator locator = connectionCreateLocator (NULL, host, GOPHER_TYPE_TEXT_FILE)。 } if (connection) { m_out += 已建立鏈接 。 } 第 10章 網(wǎng)絡(luò)程序設(shè)計(jì)實(shí)例 catch (CInterException* pEx) { connection = NULL。 CGopherConnection* connection = NULL。 m_out += 正在鏈接 Whois地址 + host + \r\n。如果向 WHOIS服務(wù)器的端口 43發(fā)送包含域名的字符串 , 則WHOIS服務(wù)器將會(huì)返回該域擁有者的信息 。 國(guó)際上的域名注冊(cè)機(jī)構(gòu)擁有 WHOIS服務(wù)器 , 例如 , 域名結(jié)尾為 .的域都在一個(gè)稱(chēng)為 InterNIC的機(jī)構(gòu)中注冊(cè) , 該機(jī)構(gòu)擁有一個(gè)WHOIS 服務(wù)器 , 稱(chēng)為 。WHOIS服務(wù)建立了 Inter上的域名數(shù)據(jù)庫(kù) 。 第 10章 網(wǎng)絡(luò)程序設(shè)計(jì)實(shí)例 6. WHOIS協(xié)議查詢(xún)代碼 還有一個(gè)協(xié)議也能提供網(wǎng)址的相關(guān)信息 , 它也是一種古老的協(xié)議 , MFC并不直接支持它 , 這就是 WHOIS協(xié)議 。 } 編譯程序,輸入地址 ,程序?qū)?huì)返回該服務(wù)器的 Email地址,從返回的信息可知,出于安全考慮,該服務(wù)器的其他 FINGER服務(wù)已被取消了。 UpdateData(FALSE)。 現(xiàn)在 , 給 IDC_BUTTON_FINGER按鈕鏈接單擊消息的處理函數(shù) , 并編寫(xiě)如下代碼: 第 10章 網(wǎng)絡(luò)程序設(shè)計(jì)實(shí)例 void CScanDlg::OnButtonFinger(?) { UpdateData(TRUE)。隨后,創(chuàng)建一個(gè)文本文件類(lèi)型的 Gopher位置,用來(lái)操作服務(wù)器返回的信息,該語(yǔ)句為 CGopherLocator locator = connectionCreateLocator(NULL, NULL, GOPHER_TYPE_TEXT_FILE)。 UpdateData(FALSE)。 \r\n。 delete connection。 \r\n。 delete file。 i++) { m_out += line + \r\n。amp。 for (int i=0。 pExDelete(?)。 try { file = connectionOpenFile(locator)。 CGopherLocator locator = connectionCreateLocator (NULL,NULL,GOPHER_TYPE_TEXT_FILE)。 pExDelete(?)。 try { connection= (host,NULL,NULL,79)。 UpdateData(FALSE)。 第 10章 網(wǎng)絡(luò)程序設(shè)計(jì)實(shí)例 給 CScanDlg 類(lèi) 增 加 一 個(gè) 如 下 的 成 員 函 數(shù) void TryFinger(CString host): void CScanDlg::TryFinger(CString host) { CInterSession session。如果發(fā)送的字符串僅僅包含 \r\n,服務(wù)器通常會(huì)把本服務(wù)器上所有用戶(hù)的列表及相關(guān)信息 (如用戶(hù)真實(shí)姓名等 )作為應(yīng)答返回。對(duì)于 FINGER服務(wù)來(lái)說(shuō),它使用端口 79。所有的Inter鏈接都需要一個(gè)宿主名和端口號(hào),所有的著名的服務(wù)都有其特定的端口號(hào)。 為了安全起見(jiàn) , 許多網(wǎng)絡(luò)服務(wù)器不提供 FINGER服務(wù) , 但當(dāng)它接收到 FINGER查詢(xún)請(qǐng)求時(shí) , 仍然會(huì)返回一些有用信息 。 在一個(gè) FINGER服務(wù)器上 , 可以查詢(xún)它的某一個(gè)用戶(hù)或整個(gè)網(wǎng)址的情況 。 } 重新編譯程序 , 輸入地址 , 程序?qū)?huì)探查出它是一個(gè) Gopher地址 , 并顯示出第一個(gè) Gopher位置 。 TryGopher(m_host)。 m_out = 。Gopher位置建立后 , 我們把它強(qiáng)制轉(zhuǎn)換為 CString類(lèi)型 , 并把該位置顯示出來(lái) 。 其函數(shù)原形如下: CGopherLocator CreateLocator( LPCTSTR pstrDisplayString, ??LPCTSTR pstrSelectorString, ??DWORD dwGopherType )。 (2) 建立一個(gè) Gopher位置 (locator)的語(yǔ)句是: CGopherLocator locator = connection CreateLocator (NULL, NULL, GOPHER_TYPE_DIRECTORY)。 } 第 10章 網(wǎng)絡(luò)程序設(shè)計(jì)實(shí)例 本函數(shù)和前兩個(gè)函數(shù)大致相似 , 下面對(duì)主要語(yǔ)句進(jìn)行一些說(shuō)明 。 } m_out += \r\n。 } else { m_out += 本地址沒(méi)有發(fā)現(xiàn) gopher主機(jī) 。 connectionClose(?)。 第 10章 網(wǎng)絡(luò)程序設(shè)計(jì)實(shí)例 line = locator。 CString line。 } if (connection) { m_out += 已建立鏈接 。 } 第 10章 網(wǎng)絡(luò)程序設(shè)計(jì)實(shí)例 catch (CInterException* pEx) { connection = NULL。 CGopherConnection* connection = NULL。 m_out += 正在鏈接 gopher地址 + host + \r\n。位置是 Gopher協(xié)議的概念,任何 Gopher客戶(hù)程序必須先得到一個(gè) Gopher位置,然后才能進(jìn)行相應(yīng)的 Gopher操作。要實(shí)現(xiàn) Gopher查詢(xún),我們應(yīng)給 CScanDlg類(lèi)增加另一個(gè)成員函數(shù) void TryGopher(CString host)。 第 10章 網(wǎng)絡(luò)程序設(shè)計(jì)實(shí)例 4. Gopher協(xié)議查詢(xún)代碼 Gopher是一種基于文本的協(xié)議,它和 WWW相似,可以通過(guò)點(diǎn)擊鏈接點(diǎn)實(shí)現(xiàn)網(wǎng)絡(luò)的鏈接和瀏覽。從程序開(kāi)始查詢(xún)到輸出結(jié)果將有一段較長(zhǎng)的時(shí)間,因?yàn)槌绦蛞冉Y(jié)果全部探查到后再顯示,但實(shí)際上現(xiàn)在的商業(yè) Inter程序都是實(shí)時(shí)顯示的。 } 第 10章 網(wǎng)絡(luò)程序設(shè)計(jì)實(shí)例 現(xiàn)在已完成了 FTP鏈接的實(shí)現(xiàn)代碼。 TryFTP(m_host)。 m_out = 。 大多數(shù) FTP地址前有前綴 ftp., 一些早期的地址沒(méi)有此前綴 。 } 第 10章 網(wǎng)絡(luò)程序設(shè)計(jì)實(shí)例 本函數(shù)和 TryURL(?)很相似 , 不過(guò)它不使用OpenURL(?)來(lái)打開(kāi)一個(gè)文件 , 而用 GetFtpConnection(?)與 FTP服務(wù)器建立鏈接 。 } m_out += \r\n。 } else { m_out += 本地址沒(méi)有發(fā)現(xiàn) ftp主機(jī) 。 connectionClose(?)。 connectionGetCurrentDirectory(line)。 \r\n。 pExDelete(?)。 第 10章 網(wǎng)絡(luò)程序設(shè)計(jì)實(shí)例 try { connection = (host)。 UpdateData(FALSE)。 首先給對(duì)話(huà)框類(lèi)增加一個(gè)實(shí)現(xiàn)鏈接的函數(shù) TryFTP,代碼如下: void CScanDlg::TryFTP(CString host) { CInterSession session。在連接到 Inter后 , 程序輸出 頭 20行 , 如圖 109所示 。 例如 , 當(dāng)用戶(hù)輸入 , 程序?qū)⑹紫仍囈辉? 然后試一試 到此為止 , 就可以編譯程序并執(zhí)行了 。 } 第 10章 網(wǎng)絡(luò)程序設(shè)計(jì)實(shí)例 這段程序代碼中 , UpdateData(TRUE)的調(diào)用將給m_host賦予用戶(hù)定義的值 。 TryURL( + m_host)。 m_out = 。 第 10章 網(wǎng)絡(luò)程序設(shè)計(jì)實(shí)例 用于查詢(xún)的函數(shù)編寫(xiě)完后 , 還要給按鈕的單擊事件增加代碼 , 以便按鈕按下時(shí)程序開(kāi)始查詢(xún) 。 } m_out+=\r\n。 delete file。i++) 第 10章 網(wǎng)絡(luò)程序設(shè)計(jì)實(shí)例 { m_out+=line+\r\n。amp。 for(int i=0。 \r\n。如果成功 , 用一個(gè) for循環(huán)讀出返回文件的頭 20句并輸出;如果失敗 , 也要給出相應(yīng)的提示 。 } 第 10章 網(wǎng)絡(luò)程序設(shè)計(jì)實(shí)例 通過(guò)以上代碼 , 程序?qū)⑹褂糜脩?hù)指定的地址來(lái)試圖打開(kāi) HTTP網(wǎng)址 , 如果失敗 , 返回的文件為空 , 程序?qū)⒗^續(xù)運(yùn)行 , 嘗試用其他協(xié)議打開(kāi)網(wǎng)址 。 } catch(CInterException* pEx) { file=NULL。本段程序代碼如下: 第 10章 網(wǎng)絡(luò)程序設(shè)計(jì)實(shí)例 CInterFile* file=NULL。由于本程序用于探查未知的網(wǎng)址,該網(wǎng)址可能不提供相應(yīng)服務(wù)或根本不存在,因此 OpenURL(?)有時(shí)可能不會(huì)正常運(yùn)行。 該函數(shù)返回一個(gè)文件的指針 , 文件類(lèi)型為以下四種之一: file: //如果訪(fǎng)問(wèn)的是本地機(jī)器 , 函數(shù)返回一個(gè)CStudioFile類(lèi)對(duì)象的指針 ftp: //如果訪(fǎng)問(wèn)的是 FTP地址 , 函數(shù)返回一個(gè)CInterFile類(lèi)對(duì)象的指針 gopher: //如果訪(fǎng)問(wèn)的是 Gopher地址 , 函數(shù)返回一個(gè) CGopherFile類(lèi)對(duì)象的指針 : //如果訪(fǎng)問(wèn)的是 HTTP地址 , 函數(shù)返回一個(gè)CHttpFile類(lèi)對(duì)象的指針 第 10章 網(wǎng)絡(luò)程序設(shè)計(jì)實(shí)例 本程序用于訪(fǎng)問(wèn)遠(yuǎn)程機(jī)器,因此,函數(shù)不會(huì)返回一個(gè) CGopherFile和 CHttpFile均派生自 CInterFile,所以將該函數(shù)返回值賦給CInterFile類(lèi)的指針是安全的。 UpdateData(FALSE)。 本程序在構(gòu)造 CInterSession對(duì)象時(shí)使用缺省值 ,因此 , 構(gòu)造函數(shù)將不帶任何參數(shù) , 如下所示: CInterSession session。 如果是通過(guò)撥號(hào)上網(wǎng)的 , 選中 “ 撥號(hào)
點(diǎn)擊復(fù)制文檔內(nèi)容
職業(yè)教育相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1