




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、實(shí)驗(yàn)三 一、 實(shí)驗(yàn)名稱:ICMP協(xié)議Ping程序?qū)崿F(xiàn)二、 實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)ICMP協(xié)議原理, 并掌握在其協(xié)議上進(jìn)行Ping程序開發(fā)的方法.三、 實(shí)驗(yàn)要求查找資料, 寫出Ping程序原理并編寫程序, 寫出主要使用到的API函數(shù).四、 實(shí)驗(yàn)內(nèi)容Ping原理:ping的原理就是首先建立通道,然后發(fā)送包,對方接受后返回信息,這個(gè)包至少包括以下內(nèi)容,發(fā)送的時(shí)候,包的內(nèi)容包括對方的ip地址和自己的地址,還有序列數(shù),回送的時(shí)候包括雙方地址,還有時(shí)間等,主要是接受方在都是在操作系統(tǒng)內(nèi)核里做好的,時(shí)刻在監(jiān)聽,提供一段c程序的代碼,希望對大家有用。向遠(yuǎn)程計(jì)算機(jī)通過ICMP協(xié)議發(fā)送特定的數(shù)據(jù)包,然后等待回應(yīng)并接收返回的
2、數(shù)據(jù)包 ,對每個(gè)接收的數(shù)據(jù)包均根據(jù)傳輸?shù)南⑦M(jìn)行驗(yàn)證。默認(rèn)情況下,傳輸四個(gè)包含 32 字節(jié) 數(shù)據(jù)(由字母組成的一個(gè)循環(huán)大寫字母序列)的回顯數(shù)據(jù)包。過程如下: (1)通過將 ICMP 回顯數(shù)據(jù)包發(fā)送到計(jì)算機(jī)并偵聽回顯回復(fù)數(shù)據(jù)包來驗(yàn)證與一臺(tái)或多臺(tái)遠(yuǎn)程計(jì)算機(jī)的連接。 (2)每個(gè)發(fā)送的數(shù)據(jù)包最多等待一秒。(3)打印已傳輸和接收的數(shù)據(jù)包數(shù)。主要API函數(shù):#include "stdafx.h"#include "ping.h"#include "pingDlg.h"#include <winsock.h>#ifdef _DEBUG#
3、define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endifextern SOCKET m_socket;BOOL ping(const char *ipaddr, char *resp);class CAboutDlg : public CDialogpublic:CAboutDlg();enum IDD = IDD_ABOUTBOX ;protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV supportprotected:
4、DECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD)void CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)END_MESSAGE_MAP()CPingDlg:CPingDlg(CWnd* pParent /*=NULL*/): CDialog(CPingDlg:IDD, pParent)m_Ctx = _T("");m_
5、hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);void CPingDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);DDX_Control(pDX, IDC_IPADDRESS1, m_IP);DDX_Text(pDX, IDC_EDIT1, m_Ctx);DDX_Text(pDX, IDC_EDIT_NUM, m_Num);BEGIN_MESSAGE_MAP(CPingDlg, CDialog)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_
6、WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_OK, OnOk)ON_BN_CLICKED(IDC_START, OnStart)END_MESSAGE_MAP()BOOL CPingDlg:OnInitDialog()CDialog:OnInitDialog();SetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set small iconm_IP.SetWindowText("127.0.0.1");intres;inttimeout = 100;WSADATA wsa
7、Data;if(WSAStartup( MAKEWORD( 1, 0 ), &wsaData ) != 0)MessageBox("Window Socket 初始化失敗!");return FALSE;/創(chuàng)建SOCKET / AF_INET:協(xié)議族為TCP/IP/SOCK_RAW:原始方式(直接與IP層交換數(shù)據(jù))/IPPROTO_ICMP:子協(xié)議類型m_socket = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);if(m_socket = INVALID_SOCKET)MessageBox("創(chuàng)建 Socket 失敗
8、!");return FALSE;/ 設(shè)置選項(xiàng):接受超時(shí)為100msres = setsockopt(m_socket,SOL_SOCKET,SO_RCVTIMEO,(char*)&timeout,sizeof(timeout);if(res = SOCKET_ERROR)MessageBox("設(shè)置接受超時(shí)為100ms 失敗!");timeout = 1000;/ 設(shè)置發(fā)送超時(shí)為1000msres = setsockopt(m_socket,SOL_SOCKET,SO_SNDTIMEO,(char*)&timeout,sizeof(timeout
9、);if(res = SOCKET_ERROR)MessageBox("設(shè)置發(fā)送超時(shí)為100ms 失敗!");return TRUE; / return TRUE unless you set the focus to a controlvoid CPingDlg:OnOK() void CPingDlg:OnCancel() void CPingDlg:OnSysCommand(UINT nID, LPARAM lParam)if (nID & 0xFFF0) = IDM_ABOUTBOX)CAboutDlg dlgAbout;dlgAbout.DoModal()
10、;elseCDialog:OnSysCommand(nID, lParam);void CPingDlg:OnPaint() if (IsIconic()CPaintDC dc(this); / device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);/ Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);
11、CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;/ Draw the icondc.DrawIcon(x, y, m_hIcon);elseCDialog:OnPaint();HCURSOR CPingDlg:OnQueryDragIcon()return (HCURSOR) m_hIcon;void CPingDlg:OnOk() CDialog:OnOK();BOOL CPingDlg:DestroyWin
12、dow() closesocket(m_socket);WSACleanup ();return CDialog:DestroyWindow();void CPingDlg:OnStart() charipaddr32;charresp4096;UINTn,ok = 0;floatloss;UpdateData(TRUE);if(m_Num <= 0)return;m_IP.GetWindowText(ipaddr,30);sprintf(resp,"rnping %s.rn",ipaddr);AppendMsg(resp);for(n = 0; n < m_Num; n+)if(ping(ipaddr,resp)ok+;AppendMsg(resp);Sleep(1000);if(ok = 0)loss = 100.0f;elseloss = 100.0f - float(n * 100.0f / ok);sprintf(resp,"rnPing %s 的統(tǒng)計(jì)結(jié)果:rnt發(fā)送 = %d 接收 = %d 丟失 = %.2f",ipaddr,n,ok,loss);AppendMsg(resp);void CPingDlg:AppendMsg(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 餐飲娛樂聯(lián)營協(xié)議書
- 集體用地地產(chǎn)協(xié)議書
- 公司間債務(wù)償還協(xié)議書
- 陽臺(tái)封窗合同協(xié)議書
- 輕鋼別墅建房協(xié)議書
- 裝修保修責(zé)任協(xié)議書
- 裝修售后安全協(xié)議書
- 解除合資合同協(xié)議書
- 銀行集體賬戶協(xié)議書
- 問題設(shè)備置換協(xié)議書
- 抗?jié)B混凝土抗?jié)B試驗(yàn)方法
- GB/T 11023-2018高壓開關(guān)設(shè)備六氟化硫氣體密封試驗(yàn)方法
- 九年級十二班走讀生家長會(huì)課件
- 工改工政策分析課件
- 醇基燃料技術(shù)資料
- 施工企業(yè)資質(zhì)及承接工程的范圍
- 泥漿測試記錄表
- 《摩擦力》說課課件(全國獲獎(jiǎng)實(shí)驗(yàn)說課案例)
- 個(gè)人信用報(bào)告異議申請表
- 初中數(shù)學(xué) 北師大版 七年級下冊 變量之間的關(guān)系 用圖象表示的變量間關(guān)系 課件
- 2023年藝術(shù)與審美期末試卷答案參考
評論
0/150
提交評論