diff --git a/README.md b/README.md index d528737..6f9df1a 100644 --- a/README.md +++ b/README.md @@ -225,7 +225,7 @@ verysimple -c server.toml 标准模式使用toml格式,类似windows的ini,对新手友好,不容易写错。推荐直接使用标准模式。 -本作的 examples文件夹中的 vlesss.client.toml, vlesss.server.toml , z_multi.client.toml 等文件中 提供了大量解释性的注释, 对新手很友好 +本作的 examples文件夹中的 vlesss.client.toml, vlesss.server.toml , multi.client.toml 等文件中 提供了大量解释性的注释, 对新手很友好, 一定要读一下,才可以熟练掌握配置格式。 ### 兼容模式 diff --git a/examples/z_multi.client.toml b/examples/z_multi.client.toml deleted file mode 100644 index b009d91..0000000 --- a/examples/z_multi.client.toml +++ /dev/null @@ -1,49 +0,0 @@ -# 本示例文件之所以 以 z_ 开头,是为了确保 “所有示例文件” 的开头字母都是 v 及v以后的字母 -# 这样可以保证示例文件 尽量被 放在文件夹列表的末尾 - -[app] -loglevel = 1 -default_uuid = "a684455c-b14f-11ea-bf0d-42010aaa0003" - -[[listen]] -protocol = "socks5" -host = "127.0.0.1" -port = 10800 - -[[dial]] -tag = "my_vless1" -protocol = "vlesss" -host = "127.0.0.1" -port = 4433 -version = 0 -insecure = true -utls = true - - -[[dial]] -tag = "my_ws1" -protocol = "vlesss" -host = "127.0.0.1" -port = 4434 -insecure = true -utls = true -advancedLayer = "ws" -path = "/ohmygod_verysimple_is_very_simple" - -# route就是分流规则,分流规则从上到下匹配,匹配到哪一个就用哪一个. - -[[route]] -dialTag = "my_ws1" -country = ["CN"] - -[[route]] -dialTag = "my_vless1" - -# 这里我们只给了tag, 没给其它限定条件,也就是说肯定会匹配到这一条 规则 -# 如果所有route均不匹配,则数据会流向 proxy 这个tag,如果这个tag没有具体的dial,则流向第一个dial -# 如果匹配了mycountry, 则数据会直接被直连. -# 其它分流匹配示例: -# ip = ["0.0.0.0/8","10.0.0.0/8","fe80::/10","10.0.0.1"] -# domain = ["www.google.com","www.twitter.com"] -# network = ["tcp","udp"] -# inTag = ["tag1","tag2"] \ No newline at end of file diff --git a/examples/z_multi.server.toml b/examples/z_multi.server.toml deleted file mode 100644 index 50f789f..0000000 --- a/examples/z_multi.server.toml +++ /dev/null @@ -1,30 +0,0 @@ -[app] -loglevel = 1 -default_uuid = "a684455c-b14f-11ea-bf0d-42010aaa0003" - -[[listen]] -tag = "my_vlesss1" -protocol = "vlesss" -host = "0.0.0.0" -port = 4433 -insecure = true -fallback = ":80" -cert = "cert.pem" -key = "cert.key" - -[[listen]] -tag = "my_ws1" -protocol = "vlesss" -host = "0.0.0.0" -port = 4434 -insecure = true -cert = "cert.pem" -key = "cert.key" -advancedLayer = "ws" -path = "/ohmygod_verysimple_is_very_simple" - - -[[dial]] -protocol = "direct" - - diff --git a/netLayer/readv.go b/netLayer/readv.go index 429458f..ad3accd 100644 --- a/netLayer/readv.go +++ b/netLayer/readv.go @@ -31,12 +31,14 @@ func GetRawConn(reader io.Reader) syscall.RawConn { } /* ReadFromMultiReader 用于读端实现了 readv但是写端的情况,比如 从socks5读取 数据, 等裸协议的情况。 -返回错误时,依然返回原 buffer或者新分配的buffer. 本函数不负责 释放分配的内存. 这样有时可以重复利用缓存。 + 若allocedBuffers未给出,会使用 utils.AllocMTUBuffers 来初始化 缓存。 +返回错误时,依然会返回 原buffer 或者 在函数内部新分配的buffer. 本函数不负责 释放分配的内存. 这样有时可以重复利用缓存。 + 小贴士:将该 net.Buffers 写入io.Writer的话,只需使用 其WriteTo方法, 即可自动适配writev。 -TryCopy函数使用到了本函数。 +TryCopy函数使用到了本函数 来进行readv相关操作。 */ func ReadFromMultiReader(rawReadConn syscall.RawConn, mr utils.MultiReader, allocedBuffers net.Buffers) (net.Buffers, error) {