在Window Embedded CE(Wince)下使用OpenNETCF进行路由表的开发
2015-10-20 22:57
453 查看
点击打开链接
背景
在开发3G项目的是时候,发现尽管3G网络连接已经建立成功了,但是数据不能发送成功,查明原因,由于路由表的问题,导致数据往ActiveSync连接的对端,也就是PC发送,而不是发送到3G网络的拨号服务器去。本文讲述如何使用OpenNETCF来修改路由表。什么是路由表(Routing Table)
先看一个Window Embedded CE的路由表代码
上面是整个程序的代码。下面分开讲一下。通过Singleton可以取出当前机器上的路由表信息。
显示
IPRoutingTable table = IPRoutingTable.GetRoutingTable();取出IPRoutingTable下的IPForwardEntry 就可以显示整个路由表信息。
static void Display(IPRoutingTable table)
{
Console.WriteLine("\r\n*IP Routing Table\r\n====================");
Console.WriteLine(string.Format("{0}{1}{2}{3}{4}",
"[Destination]".PadLeft(15),
"[NetMask]".PadLeft(15),
"[Next Hop]".PadLeft(15),
"[Interface]".PadLeft(15),
"[Metric]".PadLeft(12)));
foreach (IPForwardEntry entry in table)
{
string interfaceName;
if(entry.NetworkInterface == null)
{
interfaceName = "127.0.0.1";
}
else
{
interfaceName = entry.NetworkInterface.CurrentIpAddress.ToString();
}
Console.WriteLine(string.Format("{0}{1}{2}{3}{4}",
entry.Destination.ToString().PadLeft(15),
entry.SubnetMask.ToString().PadLeft(15),
entry.NextHop.ToString().PadLeft(15),
interfaceName.PadLeft(15),
entry.Metric.ToString().PadLeft(12)));
if (entry.Destination.Equals(DefaultRoute))
{
if (entry.NextHop.Equals(ActiveSyncIP))
{
activeSyncRouteMetric = entry.Metric;
}
IPForwardEntry tempEntry = entry.Clone();
routeEntries.Add(tempEntry);
}
}
}
显示当前机器上所有的路由信息。
删除
Windows Embedded CE和PC对删除的操作有区别,在Wince下只能删除一个Destination,而PC可以删除指向这一Destination的网关。所以在Wince下删除指向这一Destination的网关不方便,需要先删除所有的,然后增加不想删除的。下面的语句是删除操作。table.Remove(DefaultRoute);删除默认路由后的路由信息。
修改
可以直接修改路由表项(IPForwardEntry)信息的属性。entry.Metric = activeSyncRouteMetric - 1;
新增
新增就是把IPForwardEntry增加到IPRoutingTable里面table.Add(entry);新增默认路由后的路由表信息。
我把3G链接的路由项的Metric修改成49,这样会优先走这条路由信息。这样就能ping通google了。
最近不是很顺利,放个转运风车,点一下转转运。Cheer up.
相关文章推荐
- lvs+heartbeat+ldirectord实现Director的高可用
- 虚拟机中 Linux下I cannot start the X server的问题
- Nginx 安装成Windows服务
- Linux下的socket编程实践(八) Select的限制和poll(并发的初步知识)
- [转] iOS --- 应用架构谈之二: View层的组织和调用方案
- linux远程连接客户端总结
- Nginx + Keepalived 双机热备
- win+Apache+mod_wsgi部署python程序-apache2.2+python2.7
- Nginx 反向代理Apache
- 每天一个Linux命令(1): find
- [笔记]架构探险-从零开始写JavaWeb框架-1. 之搭建轻量级mvc框架
- Tomcat配置优化
- 在RedHat 6.x和7.x上用编译ffmpeg
- [教程] IDEA13 + Maven 3.1 + Tomcat 7 + jrebel热部署web应用【JRebel无法安装时】
- 基于cobbler完成自动批量部署centos
- 关于linux 原始套接字编程
- hadoop ERROR security.UserGroupInformation: PriviledgedActionException as:root
- 利用DropDownList实现下拉
- Linux下LVM配置过程
- CentOS 6.X学习心得