CrazyBoyFeng 最近的时间轴更新
CrazyBoyFeng

CrazyBoyFeng

V2EX 第 55123 号会员,加入于 2014-01-29 14:01:28 +08:00
android 开发只能用 gradle 吗?
Android  •  CrazyBoyFeng  •  38 天前  •  最后回复来自 systemcall
34
android 内网映射有什么好用的免费方案?
问与答  •  CrazyBoyFeng  •  114 天前  •  最后回复来自 xiebinbin666
2
org 到底能不能备案?
Chamber  •  CrazyBoyFeng  •  94 天前  •  最后回复来自 CrazyBoyFeng
2
国内有没有 IPv6 的 checkip/getip/myip API?
IPv6  •  CrazyBoyFeng  •  174 天前  •  最后回复来自 Atomo
8
世界上版权法最宽松的地方是哪里?
调查  •  CrazyBoyFeng  •  340 天前  •  最后回复来自 CrazyBoyFeng
12
现在比较好用的 ED2K 分享软件有哪些?
软件  •  CrazyBoyFeng  •  347 天前  •  最后回复来自 Aksura
7
电力猫是效果都这么差还是我给 tplink 充的钱不够?
宽带症候群  •  CrazyBoyFeng  •  2020-01-03 11:03:32 AM  •  最后回复来自 b1u2g3
12
CrazyBoyFeng 最近回复了
17 天前
回复了 gam2046 创建的主题 Android VpnService 能否原样将三层的 IP 报文发出去?
至于为什么 tun2socks 使用用户态协议栈 lwip,那是因为它把包发给 socks 服务器了,而不是传输修改了 header 的 tcp 和 udp 。jvm 上并不能修改包头并重新发送。如果能直接发的话,题目的要求(转发)将变得十分简单。
所以 jvm 要转发只有俩实现方案:
1. 本地起个 socks 服务器,tun2socks 转给 socks 服务器。socks 往外的连接要传给 android protect() 一下。
2. nat 实现。各自缓存一套 tcp 和 udp 的 natsession map 。收到来自 lan 的包,检查一下有没有 session,有的话直接取出来往 wan 传送 data 。没有的话建立一个 protect() wan 连接并存入 session map 。tcp 要处理握手和挥手,收到 lan 握手包建立外部连接,lan 挥手包关闭连接清除 session,如果是 wan 关闭连接则向 lan 发送挥手包。wan udp 连接设置个 timeout,超时自动关闭,关闭时清除 session 。
17 天前
回复了 gam2046 创建的主题 Android VpnService 能否原样将三层的 IP 报文发出去?
@gam2046 #9
请问你最终实现报文转发了吗?
我搜了一圈,网上几乎都是 NAT 实现的。java 层似乎并不能实现用户态协议栈,因为不能发 raw 包,只能发 java 封装好的 tcp 和 udp 包。可以借助 jni 可以发 raw 包,但是如你所说,需要 root 。
有试过把钛备份装进这个空间吗?
我给三楼的举例补充一下代码说明:
```
运营商 Interface 运营商=null;
switch(用户.get 运营商()):
case 移动:
运营商=new 移动();
break;
case 联通:
运营商=new 联通();
break;
try{
运营商.发短信();
}catch(短信失败 Exception e){
运营商.打电话();
}
```

这段代码不用接口的话,实现相同功能可能需要写出许多重复代码。
关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2220 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 22ms · UTC 14:20 · PVG 22:20 · LAX 07:20 · JFK 10:20
♥ Do have faith in what you're doing.