寻找 raw socket 方面的移动端开发者

24 天前
 wangbin11

众所周知我是做异地组网的,最近在写安卓客户端,之前的方案是搞 tun ,但是多方查证发现没有直接用跑 tun 有几点原因

1.tun 需要 root 权限 2.我这里没有 ketlin 或者 flutter 开发者来做界面调用 go 写的。so 文件

经过这些原因干脆直接我把打洞模块封装一下,搞成 so 文件,通过 raw socket 绑定,直接使用官方的 api 类似这种: https://api.flutter.dev/flutter/dart-io/RawSocket-class.html

想找一个感兴趣的开发者,一起加入我们做异地组网

1593 次点击
所在节点    Android
11 条回复
wangbin11
24 天前
有意向的可以直接发送联系方式到邮箱 wangbin@xinghuankj.com
或者+v wang0123qwe
pagxir
24 天前
不用试,没有 root 的 Android 不具有 raw socket 权限
pagxir
24 天前
其次,tun 接口在 vpnservices 里有提供,你需要的是集成类似 tun2sock 之类的 tcp/ip 协议栈
GeekGao
24 天前
3 楼正解,tun2sock 动态链接库拿来就可以用的
wangbin11
24 天前
@GeekGao
@pagxir 我查阅的资料是 tun 需要 root ,rawsocket 可以放到用户空间执行
https://www.yisu.com/jc/110003.html
wangbin11
24 天前
@pagxir 我是这样设想的,我打洞那里是 go 写的 ndk 封装成 so 文件,通过 rawsocket 绑定把数据给到安卓,如果用 tunsock 我这里没有熟悉的,不知道回复的大佬接不接私活,可以加下
GeekGao
23 天前
@wangbin11 你查阅的资料不适用于所有安卓系统的非 root 版本。
gam2046
23 天前
raw socket 不支持非 root 权限下使用,无论是 Java 还是 NDK

非 root 环境下需要使用,仅能通过 VpnService ,系统实现依旧是通过 tun
wangbin11
23 天前
@gam2046
@GeekGao
我是这样理解的 vpnservice 申请 fd 文件符,然后把文件符传递给 so 文件( go 封装的),其他的打洞之后的操作由 so 来完成。不知道理解的对不对,目前还在找相关的开发人员,
gam2046
23 天前
@wangbin11 #9 可以,但是不一定能实现你的原始需求,当然也不知道你是要做什么。毕竟你也没说。(只是打洞,和 raw socket 并没有什么因果关系)

如果你想要主动发起 raw socket 是依旧不行的,只是作为 VpnService 可以获取到其他应用的网络数据,其会被包装成三层协议,被转到 VpnService ,并由其决定后续处理方式。
wangbin11
23 天前
@gam2046 大佬辛苦您加我一下,我发了联系方式 1 楼。我现在想改用 vpnservice 需要一个专家

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

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

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

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

© 2021 V2EX