资源简介
南京大学计算机网络实验四:静态路由编程实验,C实现。
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define PACKET_SIZE 4096
#define MAX_WAIT_TIME 5
#define MAX_NO_PACKETS 10000
#define MAX_ARP_SIZE 100
char *addr[2];
char sendpacket[PACKET_SIZE];
char recvpacket[PACKET_SIZE];
int sockfddatalen = 56;
int nsend = 0 nreceived = 0;
double temp_rtt[MAX_NO_PACKETS];
double all_time = 0;
double min = 0;
double max = 0;
double avg = 0;
double mdev = 0;
char local_mac[18];
struct sockaddr_ll dest_addr;
struct sockaddr_in from;
struct timeval tvrecv;
struct timeval tval;
pid_t pid;
struct arp_table_item
{
char ip_addr[16];
char mac_addr[18];
}arp_table[MAX_ARP_SIZE];
int arp_item_index=0;
void statistics(int sig);
void send_packet(char *dest);
void recv_packet(char *dest);
void computer_rtt(void);
void tv_sub(struct timeval *outstruct timeval *in);
int pack(char *dest);
int unpack(char *bufint len);
unsigned short cal_checksum(unsigned short *addrint len);
void init_arp()
{
FILE *fp=fopen(“arp_table““r“);
if(!fp)
{
printf(“can‘t open arp_table!\n“);
exit(0);
}
fscanf(fp“%s“arp_table[0].ip_addr);
fscanf(fp“%s“arp_table[0].mac_addr);
++arp_item_index;
while(!feof(fp))
{
fscanf(fp“%s“arp_table[arp_item_index].ip_addr);
fscanf(fp“%s“arp_table[arp_item_index].mac_addr);
++arp_item_index;
}
}
init_device()
{
FILE *fp=fopen(“device““r“);
if(!fp)
{
printf(“can‘t open the device!\n“);
exit(0);
}
fscanf(fp“%s“local_mac);
fscanf(fp“%s“local_mac);
}
/*计算rtt最小、大值,平均值,算术平均数差*/
void computer_rtt()
{
double sum_avg = 0;
int i;
min = max = temp_rtt[0];
avg = all_time/nreceived;
for(i=0; i if(temp_rtt[i] < min)
min = temp_rtt[i];
else if(temp_rtt[i] > max)
max = temp_rtt[i];
if((temp_rtt[i]-avg) < 0)
sum_avg += avg - temp_rtt[i];
else
sum_avg += temp_rtt[i] - avg;
}
mdev = sum_avg/nreceived;
}
/****统计数据函数****/
void statistics(int sig)
{
computer_rtt(); //计算rtt
printf(“\n------ %s ping statistics ------\n“addr[0]);
printf(“%d packets transmitted%d received%d%% packet losstime %.f ms\n“
nsendnreceived(nsend-nreceived)/nsend*100all_time);
printf(“rtt min/avg/max/mdev = %.3f/%.3f/%.3f/%.3f ms\n“
minavgmaxmdev);
close(sockfd);
exit(1);
}
/****检验和算法****/
unsigned short cal_chksum(unsigned short *addrint len)
{
int nleft = len;
int sum = 0;
unsigned short *w = addr;
unsigned sh
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-05-01 08:55 static-route-master\
文件 600 2017-05-01 08:55 static-route-master\README.md
目录 0 2017-05-01 08:55 static-route-master\report\
文件 580253 2017-05-01 08:55 static-route-master\report\lab4_151220055(李晓霖).pdf
目录 0 2017-05-01 08:55 static-route-master\source code\
目录 0 2017-05-01 08:55 static-route-master\source code\configuration.file\
文件 30 2017-05-01 08:55 static-route-master\source code\configuration.file\arp_table
文件 24 2017-05-01 08:55 static-route-master\source code\configuration.file\device
文件 86 2017-05-01 08:55 static-route-master\source code\configuration.file\route_info
目录 0 2017-05-01 08:55 static-route-master\source code\source.c\
文件 11114 2017-05-01 08:55 static-route-master\source code\source.c\p1.c
文件 2488 2017-05-01 08:55 static-route-master\source code\source.c\p2.c
文件 7383 2017-05-01 08:55 static-route-master\source code\source.c\r.c
相关资源
- 计算机网络系统方法--课后答案
- 计算机网络安全试题计算机网络安全
- 计算机网络课程设计 小区局域网
- 计算机网络第5版 严伟 潘爱民 课后答
- 计算机网络基础期末考试试题.docx
- 清华大学计算机网络体系结构讲义
- 计算机网络内容动画演示教程
- 四川大学计算机网络实验——web服务
- 东北大学计算机网络期末试题
- 计算机网络课程设计-发送TCP数据包
- 网络工程实践 华为ensp
- 计算结构CPU设计 verilog
- 2018年计算机考研云南大学831真题
- 2012年中南大学计科专业计算机网络课
- 数据链路层滑动窗口协议的设计与实
- 北邮计算机网络数据链路层实验滑动
- 计算机网络课程设计 小型企业网络设
- 输入输出作业题目
- 距离向量算法
- 计算机网络课程设计——IP数据报流量
- 计算机网络课程设计-校园网规划与设
- 计算机网络课程设计-电子政务网站设
- 计算机网络原理自考资料及课后习题
- 计算机网络课程设计单个/多个交换机
- 计算机网络帧的封装
- 计算机网络 邮件收发 课程设计报告
- 静态路由和RIP协议配置实验指导书
- 计算机网络滑动窗口协议GoBackN源码
- 广工计算机网络课程设计
- 计算机网络工程可行性研究报告
评论
共有 条评论