c语言实现ping程序实验报告,ping实验报告.doc

ping实验报告

沈 阳 工 程 学 院

学 生 实 验 报 告

实验室名称:信息工程系软件实验室

实验课程名称:计算机网络

实验项目名称:ICMP协议应用——Ping解析

班 级:

姓 名:

学 号:

实验日期:2012年04月28日 实验台编号:23

指导教师:

批阅教师(签字): 成绩:

一.实验目的

1) 掌握ICMP原理,体会网络层编程的不同;

2) 理解ICMP报文的作用,了解基本的网络编程框架。

二.实验内容

1) 解析Ping程序的基本实现过程。

2) 体会ICMP协议在Ping程序中的应用。

3) 体会基本的C/S编程框架。

三.实验前的准备

1) 掌握ICMP原理及相关概念。

2) 掌握C语言编程知识。

3) 掌握基本的网络编程内容

四.实验要求及实验软硬件环境

【基本要求】

对Ping程序进行调试并运行实现。

解析ping程序的主要部分,从而体会ICMP协议的应用。

完成此项实验,完成实验报告。

【实验组织方式】

小组实验

【实验条件】

局域网环境下微机二台,编程软件。

五.实验步骤

1.熟悉IP以及ICMP协议的工作机制2.熟悉3.体会ICMP协议的作用与特点;

4.调试ICMP协议的Ping实现程序;

5.参加答辩,并撰写实验报告#include

#include

#include

#define SEND_SIZE 32

#define PACKET_SIZE 4096

#define ICMP_ECHO 8

#define ICMP_ECHOREPLY 0

#pragma comment(lib,"Ws2_32.lib")

struct icmp

{

unsigned char icmp_type;

//类型

unsigned char icmp_code;

//编码

unsigned short icmp_chksum;

//校验和

unsigned short icmp_id;

//标示符

unsigned short icmp_seq;

//顺序号

unsigned long icmp_data;

//数据

};

struct ip

{

unsigned char ip_hl:4;

//报头长度

unsigned char ip_v:4;

//版本号

unsigned char ip_tos;

//服务类型

unsigned short ip_len;

//总长度

unsigned short ip_id;

//标识

unsigned short ip_off;

//标志

unsigned char ip_ttl;

//生存时间

unsigned char ip_p;

//协议号

unsigned short ip_sum;

//报头校验和

unsigned long ip_src;

//源IP地址

unsigned long ip_dst;

//目的IP地址

};

char sendpacket[PACKET_SIZE];

char recvpacket[PACKET_SIZE];

struct sockaddr_in dest_addr;

struct sockaddr_in from_addr;

int sockfd;

int pid;

unsigned short cal_chksum(unsigned short *addr,int len);

int pack(int pack_no);

int unpack(unsigned char *buf,int len);

void send_packet(void);

void recv_packet(void);

int main(int argc, CHAR* argv[])

{

struct hostent *host;

struct protoent *protocol;

int timeout=1000;

int SEND_COUNT=4;

int i;

char *par_host;

char m_Input[100];

printf("Input IP: ");

gets(m_Input);

par_host=m_Input;

WORD wVersionRequested;

WSADATA wsaData;

int err

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值