实验三(ICMPPing协议).doc_第1页
实验三(ICMPPing协议).doc_第2页
实验三(ICMPPing协议).doc_第3页
实验三(ICMPPing协议).doc_第4页
实验三(ICMPPing协议).doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验三 一、 实验名称:ICMP协议Ping程序实现二、 实验目的学习ICMP协议原理, 并掌握在其协议上进行Ping程序开发的方法.三、 实验要求查找资料, 写出Ping程序原理并编写程序, 写出主要使用到的API函数.四、 实验内容Ping原理:ping的原理就是首先建立通道,然后发送包,对方接受后返回信息,这个包至少包括以下内容,发送的时候,包的内容包括对方的ip地址和自己的地址,还有序列数,回送的时候包括双方地址,还有时间等,主要是接受方在都是在操作系统内核里做好的,时刻在监听,提供一段c程序的代码,希望对大家有用。向远程计算机通过ICMP协议发送特定的数据包,然后等待回应并接收返回的数据包 ,对每个接收的数据包均根据传输的消息进行验证。默认情况下,传输四个包含 32 字节 数据(由字母组成的一个循环大写字母序列)的回显数据包。过程如下: (1)通过将 ICMP 回显数据包发送到计算机并侦听回显回复数据包来验证与一台或多台远程计算机的连接。 (2)每个发送的数据包最多等待一秒。(3)打印已传输和接收的数据包数。主要API函数:#include stdafx.h#include ping.h#include pingDlg.h#include #ifdef _DEBUG#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: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_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_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 wsaData;if(WSAStartup( MAKEWORD( 1, 0 ), &wsaData ) != 0)MessageBox(Window Socket 初始化失败!);return FALSE;/创建SOCKET / AF_INET:协议族为TCP/IP/SOCK_RAW:原始方式(直接与IP层交换数据)/IPPROTO_ICMP:子协议类型m_socket = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);if(m_socket = INVALID_SOCKET)MessageBox(创建 Socket 失败!);return FALSE;/ 设置选项:接受超时为100msres = setsockopt(m_socket,SOL_SOCKET,SO_RCVTIMEO,(char*)&timeout,sizeof(timeout);if(res = SOCKET_ERROR)MessageBox(设置接受超时为100ms 失败!);timeout = 1000;/ 设置发送超时为1000msres = setsockopt(m_socket,SOL_SOCKET,SO_SNDTIMEO,(char*)&timeout,sizeof(timeout);if(res = SOCKET_ERROR)MessageBox(设置发送超时为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();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);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:DestroyWindow() 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(re

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论