ybjaychou
V2EX  ›  Android

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

  •  
  •   ybjaychou · Jul 12, 2016 · 31222 views
    This topic created in 3771 days ago, the information mentioned may be changed or developed.

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

    34 replies  •  2018-05-20 08:48:59 +08:00
    yuedingwangji
    yuedingwangji
    Jul 12, 2016
    1
    iptable 是应该可以做到
    acess
    acess
    Jul 12, 2016
    2
    确定目标 IP 的话,直接改路由表应该可以。
    如果不确定目标 IP ,可以用 iptables 给某个应用的 UID 打上 MARK ,然后再指定它走哪一条路由
    ybjaychou
    ybjaychou
    OP
    Jul 12, 2016 via Android
    3
    @acess IP camera 的 ip 是固定的 我用 ip route 看的话是有 eth0 和 wlan0 2 个
    ybjaychou
    ybjaychou
    OP
    Jul 12, 2016 via Android
    4
    现在 Android 的情况是如果 3 个都连上的话,默认是只走以太网这个通道的,这样的话,我拿到摄像头的数据就没办法通过 WiFi 或者 4g 往外传了
    ahtsiu
    ahtsiu
    Jul 13, 2016❤️1
    5
    android M: ConnectivityManager.bindProcessToNetwork
    android L: ConnectivityManager.setProcessDefaultNetwork
    低版本貌似就没有了。
    另外 iOS 上有类似的 API 吗?
    pagxir
    pagxir
    Jul 13, 2016 via Android
    6
    你得改用 tethering 。因为有线优先基本比无线高。
    killeder
    killeder
    Jul 13, 2016 via Android
    7
    可以的,以前做过,就是修改路由或者 iptables
    ybjaychou
    ybjaychou
    OP
    Jul 13, 2016
    8
    @ahtsiu 多谢,但是我是要一个 app 访问 2 个不同的网络啊
    ybjaychou
    ybjaychou
    OP
    Jul 13, 2016
    9
    @killeder
    现在以太网是静态 IP ,直接连接的 IP 摄像头( 192.168.2.10 ),可以访问,但是同时又需要 Wi-Fi 或者 4G 可以连接到外网把数据传出去,我要怎么修改路由或者 iptables 啊,多谢了!
    ybjaychou
    ybjaychou
    OP
    Jul 13, 2016
    10
    @killeder 是否可以指定 192.168.2.xx 的走以太网,其他的走 Wi-Fi 或者 4G 呢?
    killeder
    killeder
    Jul 13, 2016
    11
    @ybjaychou 我做过以太网做热点, wifi 做上行或者 3G 做上行,大概思路是一样的
    killeder
    killeder
    Jul 13, 2016
    12
    @ybjaychou 给个联系方式,我发给你点资料
    ybjaychou
    ybjaychou
    OP
    Jul 13, 2016
    13
    @killeder 280512307 多谢了
    ahtsiu
    ahtsiu
    Jul 13, 2016
    14
    @ybjaychou 一个 app 可以开多个进程啊,两个进程之间 RPC
    ahtsiu
    ahtsiu
    Jul 13, 2016
    15
    嗷你有 root ,那还是修改路由或者 iptable 来得快一点
    pangliang
    pangliang
    Jul 13, 2016
    16
    静态路由, 改路由表; 具体知识 google 吧;
    ybjaychou
    ybjaychou
    OP
    Jul 13, 2016
    17
    @ahtsiu @pangliang 可以帮忙弄下吗,愿意提供一定的报酬,可以的话加下 13 楼的 Q ,麻烦了。
    ahtsiu
    ahtsiu
    Jul 14, 2016
    18
    假设你 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
    ybjaychou
    OP
    Jul 14, 2016
    19
    @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
    pangliang
    Jul 15, 2016
    20
    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 参数表示这条静态路由永久生效,没有这个参数的话你电脑重启后将丢失这条路由策略。
    ybjaychou
    ybjaychou
    OP
    Jul 16, 2016
    21
    @pangliang 可能 android 上的 route 命令跟 Linux 上的有点不一样,执行你这命令执行不了,
    =====================================
    root@rk3288:/ # ip route add 192.168.2.0 mask 255.255.255.0 192.168.2.123
    Error: either "to" is duplicate, or "mask" is a garbage.
    255|root@rk3288:/ #
    255|root@rk3288:/ # ip route
    192.168.2.0/24 dev eth0 proto kernel scope link src 192.168.2.123
    root@rk3288:/ #
    oute add 192.168.2.0 mask 255.255.255.0 192.168.2.123 <
    1|root@rk3288:/ #
    1|root@rk3288:/ #
    1|root@rk3288:/ #
    1|root@rk3288:/ # ip route
    192.168.2.0/24 dev eth0 proto kernel scope link src 192.168.2.123
    root@rk3288:/ #
    root@rk3288:/ # busybox route
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    192.168.2.0 * 255.255.255.0 U 0 0 0 eth0
    root@rk3288:/ # youngdeMacBook-Pro:~ a_Bin$
    =====================================
    ps :浏览器插件今天上传图片上传不了。。
    uglyer
    uglyer
    Apr 27, 2017
    22
    想问下楼主,最后是否解决了,现在我也有类似需求。^
    csrbot
    csrbot
    May 27, 2017
    23
    楼主,你系统里面修改了哪些让 Android 系统能同时连接 wifi 和以太网,能提供一个方向吗?谢谢了。
    ybjaychou
    ybjaychou
    OP
    May 27, 2017
    24
    主要是修改了 framework 里的 ConnectivityService,我这边是以太网优先级比 Wi-Fi 高,所以就在网络连接准备注册网络时把以太网处理下,这样的话,Wi-Fi 和以太网都有 IP 了,然后设置下路由表,指定什么网段走什么网卡就可以了
    ybjaychou
    ybjaychou
    OP
    May 27, 2017❤️1
    25
    hefj
    hefj
    Aug 7, 2017
    26
    楼主,我这边也有这样的需求,修改 connectivityservice 之后目前两个网络都能够链接,以太网优先级高,功能正常。wifi 连接后图标有一个感叹号,设备无法 ping 通 wifi 所链接的路由器的网关,但是和 wifi 同一个网段的其他设备可以 ping 通此设备,请问该如何配置路由?
    hefj
    hefj
    Aug 7, 2017
    27
    @ybjaychou
    具体情况是这样,
    我的机器以太网 IP: 192.168.1.100, WIFI IP 192.168.56.102
    我的电脑 IP 192.168.1.106 ,我的手机 IP 192.168.56.107

    用 adb 进入机器 shell 环境,ping 192.168.1.106 可以通,ping IP 192.168.56.107 不通
    用电脑 ping 192.168.1.100 可以通
    用手机 ping 192.168.56.102 可以通
    也就是说目前机器无法通过 wifi 向外发数据
    如何修改理由或者源码来让 wifi 也能够往外发数据,或者指定 ip 通过 wifi 进行往外发数据?
    writeapoemforyou
    writeapoemforyou
    Aug 11, 2017
    28
    我的是参考这里的 http://blog.csdn.net/roger__wong/article/details/8603275#reply
    第一个回复就是我的, 开启了移动数据,wlan 无法 ping 通,路由配置一直不行,不知道怎么配置路由.
    writeapoemforyou
    writeapoemforyou
    Aug 11, 2017
    29
    @hefj 和你一样的情况
    hefj
    hefj
    Aug 14, 2017
    30
    我这边让同事写了一个 demo,通讯是没有问题的,也就是说 socket 通讯没问题,但是就是没法 ping,现在忙,我就没有去纠结这个问题了,等有时间在研究,android 网络这一块确实还是不太懂 @writeapoemforyou
    ChanghuiN
    ChanghuiN
    Aug 31, 2017
    31
    @ybjaychou 楼主您好,我这边也有实现同时使用 4g、wifi 的需求,我在开发者着模式中选择了始终开启移动数据,可以获取两个 ip,不过我用 4g ip 的时候,手机为什么会走 wifi 的通道啊
    hicai
    hicai
    Dec 2, 2017
    32
    @killeder 你好具体是怎么做的呢?能不能请教下。。。
    hicai
    hicai
    Dec 2, 2017
    33
    @killeder 因为最近也有这方面的需求.
    jyb
    jyb
    May 20, 2018
    34
    @killeder @ChanghuiN @hicai 我的需求也是一样,网上相关资料很少啊
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   753 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 17:33 · PVG 01:33 · LAX 09:33 · JFK 12:33
    ♥ Do have faith in what you're doing.