mirror of
https://github.com/e1732a364fed/v2ray_simple.git
synced 2025-12-24 13:27:56 +08:00
修订文档,代码
This commit is contained in:
12
README.md
12
README.md
@@ -135,6 +135,9 @@ verysimple -c server.json
|
||||
|
||||
极简模式继承自v2simple,理念是字越少越好。推荐没有极简需求的同学直接使用标准模式。
|
||||
|
||||
verysimple 继承 v2simple的一个优点,就是服务端的配置也可以用url做到。谁规定url只能用于分享客户端配置了?一条url肯定比json更容易配置,不容易出错。
|
||||
|
||||
|
||||
另外,极简模式所使用的 url并不是正规的 各个协议所规定的 分享链接格式,而是我们自己的格式,所以链接看起来会略有区别。
|
||||
|
||||
以后可以考虑 推出一个 选项,选择 到底是 使用协议所规定的格式, 还是 使用我们verysimple自己的通用链接格式。
|
||||
@@ -461,9 +464,7 @@ MIT协议,即你用的时候也要附带一个MIT文件,然后作者不承
|
||||
我fork也是尊重原作者,既然你们这么谨慎,正好推动了我的重构计划,推动了历史发展
|
||||
## 额外说明 以及 开发计划
|
||||
|
||||
本项目的目的类似于一种 proof of concept. 方便理解,也因为极简所以比官方v2ray快。
|
||||
|
||||
也因为是poc,所以我有时会尝试向 verysimple 中添加一些我设计的新功能。目前正在计划的有
|
||||
目前正在计划的有
|
||||
|
||||
1. 完善并实现 vless v1协议
|
||||
2. 什么时候搞一个 verysimple_c 项目,用c语言照着写一遍; 也就是说,就算本verysimple没有任何技术创新,单单架构简单也是有技术优势的,可以作为参考 实现更底层的 c语言实现。
|
||||
@@ -473,9 +474,6 @@ MIT协议,即你用的时候也要附带一个MIT文件,然后作者不承
|
||||
6. 握手延迟窗口技术,可用于分流一部分流量使用mux发送,达到精准降低延迟的目的;然后零星的链接依然使用单独信道。
|
||||
|
||||
|
||||
verysimple 继承 v2simple的一个优点,就是服务端的配置也可以用url做到。谁规定url只能用于分享客户端配置了?一条url肯定比json更容易配置,不容易出错。
|
||||
|
||||
|
||||
其它开发计划请参考
|
||||
https://github.com/hahahrfool/v2ray_simple/discussions/3
|
||||
|
||||
@@ -570,7 +568,7 @@ verysimple 版本 v1.0.3
|
||||
|
||||
## 免责
|
||||
|
||||
MIT协议!作者不负任何责任。本项目只是个poc项目,适合内网测试使用,以及适合阅读代码了解原理。
|
||||
MIT协议!作者不负任何责任。本项目 适合内网测试使用,以及适合阅读代码了解原理。
|
||||
|
||||
你如果用于任何其它目的,我们不会帮助你。
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ func (c *Conn) Read(b []byte) (n int, err error) {
|
||||
func (c *Conn) Write(b []byte) (n int, err error) {
|
||||
err = c.stream.Send(&Hunk{Data: b})
|
||||
if err != nil {
|
||||
return 0, utils.ErrInErr{ErrDesc: "Unable to send data over stream service", ErrDetail: err}
|
||||
return 0, utils.ErrInErr{ErrDesc: "Unable to send data over grpc stream", ErrDetail: err}
|
||||
}
|
||||
return len(b), nil
|
||||
}
|
||||
|
||||
@@ -22,14 +22,14 @@ type Splicer interface {
|
||||
// 若不是基本Conn,则会试图转换为Splicer并获取底层Conn
|
||||
func CanSpliceDirectly(r any) bool {
|
||||
|
||||
if _, ok := r.(*net.TCPConn); ok {
|
||||
switch r.(type) {
|
||||
case *net.TCPConn:
|
||||
return true
|
||||
} else if _, ok := r.(*net.UnixConn); ok {
|
||||
|
||||
case *net.UnixConn:
|
||||
return true
|
||||
default:
|
||||
return false
|
||||
}
|
||||
return false
|
||||
|
||||
}
|
||||
|
||||
func CanSpliceEventually(r any) bool {
|
||||
@@ -46,7 +46,6 @@ func CanSpliceEventually(r any) bool {
|
||||
// 如果r本身就不是 basicConn,则调用本函数没有意义, 因为既然拿不到basicConn那就不是裸奔,也就不可能splice。
|
||||
//
|
||||
func TryReadFrom_withSplice(classicWriter io.Writer, maySpliceConn net.Conn, r io.Reader, canDirectFunc func() bool) (written int64, err error) {
|
||||
//log.Println("TryReadFrom_withSplice called")
|
||||
|
||||
underlay_canSpliceDirectly := CanSpliceDirectly(maySpliceConn)
|
||||
|
||||
@@ -148,7 +147,8 @@ func TryReadFrom_withSplice(classicWriter io.Writer, maySpliceConn net.Conn, r i
|
||||
|
||||
}
|
||||
|
||||
//拷贝自 io.CopyBuffer。 因为原始的 CopyBuffer会又调用ReadFrom, 而我们这里过滤掉了ReadFrom, 希望直接进行经典拷贝
|
||||
//拷贝自 io.CopyBuffer。 因为原始的 CopyBuffer会又调用ReadFrom, 如果splice调用的话会产生无限递归。
|
||||
// 这里删掉了ReadFrom, 直接进行经典拷贝
|
||||
func ClassicCopy(w io.Writer, r io.Reader) (written int64, err error) {
|
||||
buf := utils.GetPacket()
|
||||
defer utils.PutPacket(buf)
|
||||
|
||||
Reference in New Issue
Block a user