关于 android 设备同时使用以太网和 Wi-Fi 或者以太网和 4G 的问题

2016-07-12 20:32:56 +08:00
 ybjaychou

这几天遇到这么个问题:客户的需求是以太网连接 IPCamera ,然后通过 Wi-Fi 或者 4G 把 camera 的数据传出去,但是 android 上貌似只能一个通道来传输数据,目前我在系统上的修改是可以让 3 个网卡同时获取的到 IP ,但是走数据的话只能有一个,不知道能否通过修改路由表什么的来解决这个问题,网络这块的东西不是很熟悉,希望有解决办法的人帮帮忙 (客户天天呆在我们公司,说没弄好就不走了。。。)

26437 次点击
所在节点    Android
34 条回复
yuedingwangji
2016-07-12 22:07:49 +08:00
iptable 是应该可以做到
acess
2016-07-12 22:29:30 +08:00
确定目标 IP 的话,直接改路由表应该可以。
如果不确定目标 IP ,可以用 iptables 给某个应用的 UID 打上 MARK ,然后再指定它走哪一条路由
ybjaychou
2016-07-12 23:41:50 +08:00
@acess IP camera 的 ip 是固定的 我用 ip route 看的话是有 eth0 和 wlan0 2 个
ybjaychou
2016-07-12 23:44:43 +08:00
现在 Android 的情况是如果 3 个都连上的话,默认是只走以太网这个通道的,这样的话,我拿到摄像头的数据就没办法通过 WiFi 或者 4g 往外传了
ahtsiu
2016-07-13 00:25:49 +08:00
android M: ConnectivityManager.bindProcessToNetwork
android L: ConnectivityManager.setProcessDefaultNetwork
低版本貌似就没有了。
另外 iOS 上有类似的 API 吗?
pagxir
2016-07-13 00:34:54 +08:00
你得改用 tethering 。因为有线优先基本比无线高。
killeder
2016-07-13 08:37:54 +08:00
可以的,以前做过,就是修改路由或者 iptables
ybjaychou
2016-07-13 09:47:03 +08:00
@ahtsiu 多谢,但是我是要一个 app 访问 2 个不同的网络啊
ybjaychou
2016-07-13 09:54:44 +08:00
@killeder
现在以太网是静态 IP ,直接连接的 IP 摄像头( 192.168.2.10 ),可以访问,但是同时又需要 Wi-Fi 或者 4G 可以连接到外网把数据传出去,我要怎么修改路由或者 iptables 啊,多谢了!
ybjaychou
2016-07-13 09:58:58 +08:00
@killeder 是否可以指定 192.168.2.xx 的走以太网,其他的走 Wi-Fi 或者 4G 呢?
killeder
2016-07-13 11:28:54 +08:00
@ybjaychou 我做过以太网做热点, wifi 做上行或者 3G 做上行,大概思路是一样的
killeder
2016-07-13 11:40:34 +08:00
@ybjaychou 给个联系方式,我发给你点资料
ybjaychou
2016-07-13 13:48:19 +08:00
@killeder 280512307 多谢了
ahtsiu
2016-07-13 14:07:34 +08:00
@ybjaychou 一个 app 可以开多个进程啊,两个进程之间 RPC
ahtsiu
2016-07-13 14:09:31 +08:00
嗷你有 root ,那还是修改路由或者 iptable 来得快一点
pangliang
2016-07-13 15:07:07 +08:00
静态路由, 改路由表; 具体知识 google 吧;
ybjaychou
2016-07-13 16:58:44 +08:00
@ahtsiu @pangliang 可以帮忙弄下吗,愿意提供一定的报酬,可以的话加下 13 楼的 Q ,麻烦了。
ahtsiu
2016-07-14 01:02:39 +08:00
假设你 ip cam ( 192.168.2.123 )上取数据的端口是 80 , tcp 协议,则:
iptables -t nat -A PREROUTING -p tcp -d 192.168.1.167 --dport 80 -j DNAT --to-destination 192.168.2.123
然后你向 192.168.1.167:80 请求的数据就被路由到 192.168.2.123:80 去了
ybjaychou
2016-07-14 12:25:40 +08:00
@ahtsiu 试了下,还是不行。我现在把系统改成了默认不走以太网了,走 wifi ( IP 是 192.168.1.xx )或者 4G ,以太网的 IP 是 192.168.2.123 , IP 摄像头直接接再以太网口( ip 是 192.168.2.10 ),现在只要让 192.168.2.xx 的请求走以太网就行了。还有,我用上面的命令设置了之后怎么查看有没有设置成功呢, iptables -L -n 看不到有设下去啊
pangliang
2016-07-15 17:44:55 +08:00
route add 192.168.1.0 mask 255.255.255.0 192.168.0.2 -p
解释一下, 192.168.1.0 ,指定我需要访问的网段, mask 后面的是子网掩码。最后 192.168.0.2 表示通过哪个地址访问。结尾-P 参数表示这条静态路由永久生效,没有这个参数的话你电脑重启后将丢失这条路由策略。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/292053

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX