『原创』c#开发路由选择程序
2008-08-18 21:35
316 查看
路由器名字 | 路由器子网掩码 | 路由器网络地址 |
r1 | 255.255.252.0 | 130.50.15.0 |
下面是思路,一个数据包被发送到路由端,它包含了目的ip地址(130.50.15.9),它要选择一个路由器来继续发送,路由器有r1。真实事件中有很多个路由可以选择,这里只简单的判断,能否透过此路由来发送这个数据包。
判断方法:把目的ip地址转换为2进制,把路由子网掩码也换成2进制,两个值逐位相与,最后的结果又换回十进制点分后的ip地址,如果网络号和路由器网络地址相同,则可以通过它转发,否则不行。下面给出代码:
拥有的资源:
private void button1_Click(object sender, EventArgs e)
{
byte a1 = ConvertToString((byte)numericUpDown1.Value);
byte a2 = ConvertToString((byte)numericUpDown2.Value);
byte a3 = ConvertToString((byte)numericUpDown3.Value);
byte a4 = ConvertToString((byte)numericUpDown4.Value);
byte b1 = ConvertToString((byte)numericUpDown8.Value);
byte b2 = ConvertToString((byte)numericUpDown7.Value);
byte b3 = ConvertToString((byte)numericUpDown6.Value);
byte b4 = ConvertToString((byte)numericUpDown5.Value);
byte n1 = ConvertToString((byte)numericUpDown12.Value);
byte n2 = ConvertToString((byte)numericUpDown11.Value);
byte n3 = ConvertToString((byte)numericUpDown10.Value);
byte n4 = ConvertToString((byte)numericUpDown9.Value);
numericUpDown16.Value = (a1 & b1);
numericUpDown15.Value = (a2 & b2);
numericUpDown14.Value = (a3 & b3);
numericUpDown13.Value = (a4 & b4);
if (Match(a1, b1, n1)&&Match(a2,b2,n2)&&Match(a3,b3,n3))
{
MessageBox.Show("可以通过该路由器转发","系统提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
else
{
MessageBox.Show("不可以转发,请换一个路由器","系统提示",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
private byte ConvertToString(byte x)
{
string y = Convert.ToString(x,2).PadLeft(8,'0');
byte y1 = Convert.ToByte(y,2);
return y1;
}
private bool Match(byte x, byte y,byte z)
{
if ((z&(x&y))==z)
{
return true;
}
else
{
return false;
}
}
下图显示计算结果:130.50.12.0和路由地址(网络地址)130.50.15.0不同所以不能转发。
相关文章推荐
- C#开发WAP程序(原创)
- 王晓东原创:C# 简易IDE开发工具-快速创建Windows和Web程序及Web Service服务!
- (原创)c#学习笔记02--编写c#程序01--开发环境
- C#开发的程序如何在运行的时候弹出选择调试器的代码
- c#开发Windows服务程序指南
- C#程序开发中经常遇到的10条实用的代码
- 使用C#和Excel进行报表开发(八)-用程序绑定数据源
- C# 异步编程1 APM 异步程序开发
- Visual C#.Net 网络程序开发-Socket篇
- 谷歌chrome 插件(扩展)开发——进阶篇(c#本地程序和插件交互)下
- 【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - 进程资源及属性
- c#开发的程序安装时动态指定windows服务名称
- Visual C#.Net 网络程序开发-Socket篇
- C#.Net网络程序开发-Socket篇
- C# 异步编程2 EAP 异步程序开发
- 基于.net compact framework 2.0,C#开发windows mobile 5.0程序遇到的一些问题及解决办法
- C#手机程序开发
- 简易网络爬虫程序的开发(6)(c#版)
- 用c#开发安卓程序 (xamarin.android)系列之一
- 改善C#程序的建议3:在C#中选择正确的集合进行编码