




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、實驗三 一、 實驗名稱:ICMP協(xié)議Ping程序實現二、 實驗目的學習ICMP協(xié)議原理, 并掌握在其協(xié)議上進行Ping程序開發(fā)的方法.三、 實驗要求查找資料, 寫出Ping程序原理并編寫程序, 寫出主要使用到的API函數.四、 實驗內容Ping原理:ping的原理就是首先建立通道,然后發(fā)送包,對方接受后返回信息,這個包至少包括以下內容,發(fā)送的時候,包的內容包括對方的ip地址和自己的地址,還有序列數,回送的時候包括雙方地址,還有時間等,主要是接受方在都是在操作系統(tǒng)內核里做好的,時刻在監(jiān)聽,提供一段c程序的代碼,希望對大家有用。向遠程計算機通過ICMP協(xié)議發(fā)送特定的數據包,然后等待回應并接收返回的
2、數據包 ,對每個接收的數據包均根據傳輸的消息進行驗證。默認情況下,傳輸四個包含 32 字節(jié) 數據(由字母組成的一個循環(huán)大寫字母序列)的回顯數據包。過程如下: (1)通過將 ICMP 回顯數據包發(fā)送到計算機并偵聽回顯回復數據包來驗證與一臺或多臺遠程計算機的連接。 (2)每個發(fā)送的數據包最多等待一秒。(3)打印已傳輸和接收的數據包數。主要API函數:#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層交換數據)/IPPROTO_ICMP:子協(xié)議類型m_socket = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);if(m_socket = INVALID_SOCKET)MessageBox("創(chuàng)建 Socket 失敗
8、!");return FALSE;/ 設置選項:接受超時為100msres = setsockopt(m_socket,SOL_SOCKET,SO_RCVTIMEO,(char*)&timeout,sizeof(timeout);if(res = SOCKET_ERROR)MessageBox("設置接受超時為100ms 失敗!");timeout = 1000;/ 設置發(fā)送超時為1000msres = setsockopt(m_socket,SOL_SOCKET,SO_SNDTIMEO,(char*)&timeout,sizeof(timeout
9、);if(res = SOCKET_ERROR)MessageBox("設置發(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)計結果:rnt發(fā)送 = %d 接收 = %d 丟失 = %.2f",ipaddr,n,ok,loss);AppendMsg(resp);void CPingDlg:AppendMsg(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 氫能裝備施工方案
- 惠州市匯科源科技有限公司電源適配器的生產建設項目環(huán)評報告表
- 昌江縣公益性公墓及殯儀館建設工程(一期)項目環(huán)評報告表
- 甘肅巨化新材料有限公司股東全部權益價值項目資產評估報告
- 玻璃更換施工方案施工方案
- 2024-2025學年下學期高一語文第一單元A卷
- 東江大壩隧道施工方案
- 《雷雨》教案-高一下學期語文統(tǒng)編版
- 2025年中國碑石行業(yè)供需態(tài)勢、市場現狀及發(fā)展前景預測報告
- 提高女性、老年人及殘疾人就業(yè)率的策略及實施路徑
- 《基礎和聲學》試習題庫(6套答案)
- 馬克思主義政治經濟學課程講義
- 四年級道德與法治從中國制造到中國創(chuàng)造
- SolidWorks、CAD三維建模練習習題圖
- HONEYWELLDCS操作手冊
- 2021-2022新教科版四年級科學下冊全一冊全部課件(共24課)
- 方正飛騰使用教程詳解
- 3 棄渣場施工方案
- 國外客戶來訪行程安排表
- 八路搶答器PLC控制系統(tǒng)設計
- 《車輛解壓委托書 》
評論
0/150
提交評論