From 0a69fbacbf3a24aa6744bdd0ff9deb66f5364a29 Mon Sep 17 00:00:00 2001 From: hahahrfool <75717694+hahahrfool@users.noreply.github.com> Date: Wed, 23 Mar 2022 09:25:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86=E6=89=80=E6=9C=89=E7=A4=BA=E4=BE=8B?= =?UTF-8?q?=E7=A7=BB=E5=8A=A8=E5=88=B0examples;=E4=BF=AE=E8=AE=A2=E4=BB=A3?= =?UTF-8?q?=E7=A0=81,=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 14 +++++++------- .../vlesss.client.toml | 0 .../vlesss.server.toml | 0 vs.client.json => examples/vs.client.json | 0 vs.server.json => examples/vs.server.json | 0 ws.client.toml => examples/ws.client.toml | 0 ws.server.toml => examples/ws.server.toml | 0 .../z_multi.client.toml | 0 .../z_multi.server.toml | 0 netLayer/relay.go | 18 ++++++++++-------- speed_macos.md => speed_macos_1.0.3.md | 2 +- speed_ubuntu.md => speed_ubuntu_1.0.3.md | 0 12 files changed, 18 insertions(+), 16 deletions(-) rename vlesss.client.toml => examples/vlesss.client.toml (100%) rename vlesss.server.toml => examples/vlesss.server.toml (100%) rename vs.client.json => examples/vs.client.json (100%) rename vs.server.json => examples/vs.server.json (100%) rename ws.client.toml => examples/ws.client.toml (100%) rename ws.server.toml => examples/ws.server.toml (100%) rename z_multi.client.toml => examples/z_multi.client.toml (100%) rename z_multi.server.toml => examples/z_multi.server.toml (100%) rename speed_macos.md => speed_macos_1.0.3.md (89%) rename speed_ubuntu.md => speed_ubuntu_1.0.3.md (100%) diff --git a/README.md b/README.md index cbc9ac7..d528737 100644 --- a/README.md +++ b/README.md @@ -83,7 +83,7 @@ tls lazy encrypt 特性 运行时可以用 -lazy 参数打开(服务端客户 该特性不完全稳定,可能会导致一些网页访问有时出现异常,有时出现bad mac alert;刷新页面可以解决 -不是速度慢,是因为 目前的tls过滤方式有点问题, 对close_alert等情况没处理好。而且使用不同的浏览器,现象也会不同,似乎对safari支持好一些, chrome就差一些 +不是速度慢,是因为 目前的tls过滤方式有点问题, 对close_alert等情况没处理好。而且使用不同的浏览器,现象也会不同 在我的最新代码里,采用了独特的技术,已经规避了大部分不稳定性。总之比较适合看视频,毕竟双向splice,不是白给的! @@ -145,12 +145,12 @@ git clone https://github.com/hahahrfool/v2ray_simple cd v2ray_simple && go build #如果使用极简模式,则复制vs.json文件 -cp vs.client.json client.json -cp vs.server.json server.json +cp examples/vs.client.json client.json +cp examples/vs.server.json server.json #如果使用 标准toml格式,则复制toml文件,我们提供了多种配置示例,你只需复制一种想要的即可 -cp vlesss.client.toml client.toml -cp vlesss.server.toml server.toml +cp examples/vlesss.client.toml client.toml +cp examples/vlesss.server.toml server.toml ``` 详细优化的编译参数请参考Makefile文件 @@ -225,7 +225,7 @@ verysimple -c server.toml 标准模式使用toml格式,类似windows的ini,对新手友好,不容易写错。推荐直接使用标准模式。 -我的 vlesss.client.toml, vlesss.server.toml , z_multi.client.toml 等文件中 提供了大量解释性的注释, 对新手很友好 +本作的 examples文件夹中的 vlesss.client.toml, vlesss.server.toml , z_multi.client.toml 等文件中 提供了大量解释性的注释, 对新手很友好 ### 兼容模式 @@ -317,7 +317,7 @@ MIT协议,即你用的时候也要附带一个MIT文件,然后我不承担 verysimple 是一个很简单的项目,覆盖协议也没有v2ray全,比如socks协议只能用于客户端入口,没法用于出口。 -本项目的目的类似于一种 proof of concept. 方便理解,也因为极简所以能比官方v2ray快一些。 +本项目的目的类似于一种 proof of concept. 方便理解,也因为极简所以比官方v2ray快。 也因为是poc,所以我有时会尝试向 verysimple 中添加一些我设计的新功能。目前正在计划的有 diff --git a/vlesss.client.toml b/examples/vlesss.client.toml similarity index 100% rename from vlesss.client.toml rename to examples/vlesss.client.toml diff --git a/vlesss.server.toml b/examples/vlesss.server.toml similarity index 100% rename from vlesss.server.toml rename to examples/vlesss.server.toml diff --git a/vs.client.json b/examples/vs.client.json similarity index 100% rename from vs.client.json rename to examples/vs.client.json diff --git a/vs.server.json b/examples/vs.server.json similarity index 100% rename from vs.server.json rename to examples/vs.server.json diff --git a/ws.client.toml b/examples/ws.client.toml similarity index 100% rename from ws.client.toml rename to examples/ws.client.toml diff --git a/ws.server.toml b/examples/ws.server.toml similarity index 100% rename from ws.server.toml rename to examples/ws.server.toml diff --git a/z_multi.client.toml b/examples/z_multi.client.toml similarity index 100% rename from z_multi.client.toml rename to examples/z_multi.client.toml diff --git a/z_multi.server.toml b/examples/z_multi.server.toml similarity index 100% rename from z_multi.server.toml rename to examples/z_multi.server.toml diff --git a/netLayer/relay.go b/netLayer/relay.go index 0854b82..6c57fed 100644 --- a/netLayer/relay.go +++ b/netLayer/relay.go @@ -38,15 +38,11 @@ func CanSplice(r interface{}) bool { //会接连尝试 splice、循环readv 以及 原始Copy方法 func TryCopy(writeConn io.Writer, readConn io.Reader) (allnum int64, err error) { var mr utils.MultiReader + var multiWriter utils.MultiWriter + var buffers net.Buffers var rawConn syscall.RawConn var isWriteConn_a_MultiWriter bool - var multiWriter utils.MultiWriter - isWriteConnBasic := IsBasicConn(writeConn) - - if !isWriteConnBasic { - multiWriter, isWriteConn_a_MultiWriter = writeConn.(utils.MultiWriter) - } if utils.CanLogDebug() { log.Println("TryCopy", reflect.TypeOf(readConn), "->", reflect.TypeOf(writeConn)) @@ -70,10 +66,16 @@ func TryCopy(writeConn io.Writer, readConn io.Reader) (allnum int64, err error) goto classic } - mr = utils.GetReadVReader() if utils.CanLogDebug() { log.Println("copying with readv") } + + if !IsBasicConn(writeConn) { + multiWriter, isWriteConn_a_MultiWriter = writeConn.(utils.MultiWriter) + } + + mr = utils.GetReadVReader() + defer mr.Clear() defer utils.ReleaseBuffers(buffers, readv_buffer_allocLen) @@ -85,7 +87,7 @@ func TryCopy(writeConn io.Writer, readConn io.Reader) (allnum int64, err error) var num int64 var err2 error - //如vless协议,肯定走这里,因为 vless.UserConn 实现了 utils.MultiWriter + // vless.UserConn 和 ws.Conn 实现了 utils.MultiWriter if isWriteConn_a_MultiWriter { num, err2 = multiWriter.WriteBuffers(buffers) diff --git a/speed_macos.md b/speed_macos_1.0.3.md similarity index 89% rename from speed_macos.md rename to speed_macos_1.0.3.md index e7ad3ed..13041b5 100644 --- a/speed_macos.md +++ b/speed_macos_1.0.3.md @@ -92,7 +92,7 @@ verysimple 版本 v1.0.3 在macos上,verysimple的上传速度是很强大的。不过在下载速度上略输 xray。 -不过我还没有实现readv,等我加了readv后,有可能实现反超。 +注意,这个测速是在v1.0.3时测的,当时我还没实现readv。最新代码已经实现了readv,理论上macos上也能超过xray,有机会测一测。 总之,我的双向splice功能在mac上发挥不出作用,因为mac不是linux,没splice函数。。。 diff --git a/speed_ubuntu.md b/speed_ubuntu_1.0.3.md similarity index 100% rename from speed_ubuntu.md rename to speed_ubuntu_1.0.3.md