Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
rudern
物联大师
提交
175a36bf
物
物联大师
项目概览
rudern
/
物联大师
通知
4
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
物
物联大师
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
175a36bf
编写于
10月 19, 2020
作者:
J
Jason
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
合并 role net 为 Type,简化操作
上级
d02e85b9
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
38 addition
and
33 deletion
+38
-33
core/tunnel.go
core/tunnel.go
+26
-21
core/tunnel_tcp_server.go
core/tunnel_tcp_server.go
+1
-1
core/tunnel_tcp_udp_client.go
core/tunnel_tcp_udp_client.go
+6
-5
core/tunnel_udp_client.go
core/tunnel_udp_client.go
+0
-3
core/tunnel_udp_server.go
core/tunnel_udp_server.go
+1
-1
models/tunnel.go
models/tunnel.go
+4
-2
未找到文件。
core/tunnel.go
浏览文件 @
175a36bf
...
...
@@ -46,30 +46,35 @@ func (t *baseTunnel) checkRegister(buf []byte) (string, error) {
}
func
NewTunnel
(
tunnel
*
models
.
Tunnel
)
(
Tunnel
,
error
)
{
if
tunnel
.
Role
==
"client"
{
return
&
TcpClient
{
switch
tunnel
.
Type
{
case
"tcp-server"
:
return
&
TcpServer
{
baseTunnel
:
baseTunnel
{
Tunnel
:
*
tunnel
,
},
},
nil
}
else
if
tunnel
.
Role
==
"server"
{
switch
tunnel
.
Net
{
case
"tcp"
,
"tcp4"
,
"tcp6"
,
"unix"
:
return
&
TcpServer
{
baseTunnel
:
baseTunnel
{
Tunnel
:
*
tunnel
,
},
},
nil
case
"udp"
,
"udp4"
,
"udp6"
,
"unixgram"
:
return
&
PacketServer
{
baseTunnel
:
baseTunnel
{
Tunnel
:
*
tunnel
,
},
},
nil
default
:
return
nil
,
fmt
.
Errorf
(
"未知的网络类型 %s"
,
tunnel
.
Net
)
}
}
else
{
return
nil
,
fmt
.
Errorf
(
"未知的角色 %s"
,
tunnel
.
Role
)
case
"tcp-client"
:
return
&
TcpUdpClient
{
baseTunnel
:
baseTunnel
{
Tunnel
:
*
tunnel
,
},
Net
:
"tcp"
,
},
nil
case
"udp-server"
:
return
&
PacketServer
{
baseTunnel
:
baseTunnel
{
Tunnel
:
*
tunnel
,
},
},
nil
case
"udp-client"
:
return
&
TcpUdpClient
{
baseTunnel
:
baseTunnel
{
Tunnel
:
*
tunnel
,
},
Net
:
"udp"
,
},
nil
case
"serial"
:
default
:
}
return
nil
,
fmt
.
Errorf
(
"未知的网络类型 %s"
,
tunnel
.
Type
)
}
core/tunnel_tcp_server.go
浏览文件 @
175a36bf
...
...
@@ -20,7 +20,7 @@ type TcpServer struct {
func
(
s
*
TcpServer
)
Open
()
error
{
var
err
error
s
.
listener
,
err
=
net
.
Listen
(
s
.
Net
,
s
.
Addr
)
s
.
listener
,
err
=
net
.
Listen
(
"tcp"
,
s
.
Addr
)
if
err
!=
nil
{
return
err
}
...
...
core/tunnel_tcp_client.go
→
core/tunnel_tcp_
udp_
client.go
浏览文件 @
175a36bf
...
...
@@ -7,13 +7,14 @@ import (
"net"
)
type
TcpClient
struct
{
type
Tcp
Udp
Client
struct
{
baseTunnel
Net
string
link
*
Link
//作为客户端的连接
}
func
(
c
*
TcpClient
)
Open
()
error
{
func
(
c
*
Tcp
Udp
Client
)
Open
()
error
{
conn
,
err
:=
net
.
Dial
(
c
.
Net
,
c
.
Addr
)
if
err
!=
nil
{
//_ = c.storeError(err)
...
...
@@ -25,7 +26,7 @@ func (c *TcpClient) Open() error {
return
nil
}
func
(
c
*
TcpClient
)
Close
()
error
{
func
(
c
*
Tcp
Udp
Client
)
Close
()
error
{
if
c
.
link
!=
nil
{
err
:=
c
.
link
.
Close
()
...
...
@@ -38,11 +39,11 @@ func (c *TcpClient) Close() error {
return
nil
}
func
(
c
*
TcpClient
)
GetLink
(
id
int64
)
(
*
Link
,
error
)
{
func
(
c
*
Tcp
Udp
Client
)
GetLink
(
id
int64
)
(
*
Link
,
error
)
{
return
c
.
link
,
nil
}
func
(
c
*
TcpClient
)
receive
(
conn
net
.
Conn
)
{
func
(
c
*
Tcp
Udp
Client
)
receive
(
conn
net
.
Conn
)
{
//复用地连接
if
c
.
link
==
nil
{
link
:=
newLink
(
c
,
conn
)
...
...
core/tunnel_udp_client.go
已删除
100644 → 0
浏览文件 @
d02e85b9
package
core
type
UdpClient
TcpClient
core/tunnel_udp_server.go
浏览文件 @
175a36bf
...
...
@@ -22,7 +22,7 @@ type PacketServer struct {
func
(
c
*
PacketServer
)
Open
()
error
{
var
err
error
c
.
packetConn
,
err
=
net
.
ListenPacket
(
c
.
Net
,
c
.
Addr
)
c
.
packetConn
,
err
=
net
.
ListenPacket
(
"udp"
,
c
.
Addr
)
if
err
!=
nil
{
//_ = c.storeError(err)
...
...
models/tunnel.go
浏览文件 @
175a36bf
...
...
@@ -6,8 +6,10 @@ type Tunnel struct {
Id
int64
`json:"id"`
ModelId
int64
`json:"model_id"`
//模型ID
Role
string
`json:"role"`
Net
string
`json:"net"`
//Role string `json:"role"`
//Net string `json:"net"`
Type
string
`json:"type"`
//tcp-server tcp-client udp-server udp-client serial
Addr
string
`json:"addr"`
Timeout
int
`json:"timeout"`
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录