我正在做一个项目,这应该连接到服务器通过wifi/gprs。项目是一个适用于Windows CE6.0设备的应用程序,我是在C#上用Visual Studio2008编写的。
我有两台服务器要用。第一,我必须通过wifi连接,第二,通过gprs连接。所以我需要知道,我如何改变wifi和gprs之间的连接方式?
我找到并尝试了这种方式:我在我的设备上同时打开了wifi和gprs。所以我通过wifi工作,因为它有更高的优先权。当我需要通过gprs工作时,我会关闭wifi (SetDevicePower功能)。但当我打开wifi时,它无法连接回我首选的网络。
我也听说过在操作系统优先级表中通过编程在gprs/wifi之间切换优先级的方法,但我没有找到任何关于如何做到这一点的信息。
我希望你能帮助我。
发布于 2012-03-07 00:45:25
我会使用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但是,您可以使用您的应用程序通过Process.Start(...)定期执行此任务(我假设gprs ip可能会不时更改)
- 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/Invoke:
http://msdn.microsoft.com/en-us/library/ms927384.aspx
http://msdn.microsoft.com/en-us/library/ee495149%28v=winembedded.60%29.aspx
https://stackoverflow.com/questions/9584108
复制相似问题