WinCE 6.0,使用GPRS / WiFi

时间:2012-03-06 12:54:16

标签: c# windows-ce wifi gprs

我正在开发一个项目,它应该通过wifi / gprs连接到服务器。 Project是Windows CE 6.0设备的应用程序,我在C#上用Visual Studio 2008编写。

我有两个服务器可以使用。第一个我必须通过wifi连接,第二个 - 通过gprs。所以我需要知道,如何更改wifi和gprs之间的连接方法?

我发现并尝试过这种方式:我在设备上打开了wifi和gprs。所以我通过wifi工作,因为它有更高的优先级。当我需要通过gprs工作时,我关闭了wifi(SetDevicePower功能)。但是当我打开wifi时,它无法连接回我的首选网络。

我也听说过以编程方式更改操作系统优先级表中gprs / wifi之间的优先级的方法,但我没有找到有关如何执行此操作的任何信息。

我希望你能帮助我。

1 个答案:

答案 0 :(得分:2)

我会使用shell中的route命令。

让我们假设

server1 ip: 123.123.123.1
server2 ip: 123.123.123.2

wifi ip   : 192.168.1.101
   gateway: 192.168.1.1

gprs ip   : 10.1.2.3
   gateway: 10.1.1.1

现在您可以在命令提示符中执行

route add 123.123.123.1 MASK 255.255.255.255 192.168.1.1

route add: 123.123.123.2 MASK 255.255.255.255 10.1.1.1

这应该通过wifi将所有流量路由到服务器1,并通过gprs路由到服务器2,而无需更改应用程序中的单行代码。

您可以使用

验证其是否有效
tracert 123.123.123.1
tracert 123.123.123.2

但是,您可以使用您的应用定期执行此任务(我假设gprs ip可能会不时更改),使用Process.Start(...)

- delete route 1
- add route 1
- delete route 2
- add route 2

您甚至可以使用IF 2开关指定接口(路由列表会打印网卡的接口ID)。

另一个有趣的帖子就是这个:http://ce4all.blogspot.com/2007/05/routing-ip-traffic-via-specified.html

作者使用GetAdapterAddresses()和CreateIpForwardEntry()P / Invokes:

http://msdn.microsoft.com/en-us/library/ms927384.aspx

http://msdn.microsoft.com/en-us/library/ee495149%28v=winembedded.60%29.aspx