實驗三(ICMPPing協(xié)議)_第1頁
實驗三(ICMPPing協(xié)議)_第2頁
實驗三(ICMPPing協(xié)議)_第3頁
實驗三(ICMPPing協(xié)議)_第4頁
實驗三(ICMPPing協(xié)議)_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、實驗三 一、 實驗名稱:ICMP協(xié)議Ping程序?qū)崿F(xiàn)二、 實驗?zāi)康膶W(xué)習(xí)ICMP協(xié)議原理, 并掌握在其協(xié)議上進(jìn)行Ping程序開發(fā)的方法.三、 實驗要求查找資料, 寫出Ping程序原理并編寫程序, 寫出主要使用到的API函數(shù).四、 實驗內(nèi)容Ping原理:ping的原理就是首先建立通道,然后發(fā)送包,對方接受后返回信息,這個包至少包括以下內(nèi)容,發(fā)送的時候,包的內(nèi)容包括對方的ip地址和自己的地址,還有序列數(shù),回送的時候包括雙方地址,還有時間等,主要是接受方在都是在操作系統(tǒng)內(nèi)核里做好的,時刻在監(jiān)聽,提供一段c程序的代碼,希望對大家有用。向遠(yuǎn)程計算機通過ICMP協(xié)議發(fā)送特定的數(shù)據(jù)包,然后等待回應(yīng)并接收返回的

2、數(shù)據(jù)包 ,對每個接收的數(shù)據(jù)包均根據(jù)傳輸?shù)南⑦M(jìn)行驗證。默認(rèn)情況下,傳輸四個包含 32 字節(jié) 數(shù)據(jù)(由字母組成的一個循環(huán)大寫字母序列)的回顯數(shù)據(jù)包。過程如下: (1)通過將 ICMP 回顯數(shù)據(jù)包發(fā)送到計算機并偵聽回顯回復(fù)數(shù)據(jù)包來驗證與一臺或多臺遠(yuǎn)程計算機的連接。 (2)每個發(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è)置選項:接受超時為100msres = setsockopt(m_socket,SOL_SOCKET,SO_RCVTIMEO,(char*)&timeout,sizeof(timeout);if(res = SOCKET_ERROR)MessageBox("設(shè)置接受超時為100ms 失敗!");timeout = 1000;/ 設(shè)置發(fā)送超時為1000msres = setsockopt(m_socket,SOL_SOCKET,SO_SNDTIMEO,(char*)&timeout,sizeof(timeout

9、);if(res = SOCKET_ERROR)MessageBox("設(shè)置發(fā)送超時為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)計結(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)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論