提交 175a36bf 编写于 作者: J Jason

合并 role net 为 Type,简化操作

上级 d02e85b9
......@@ -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)
}
......@@ -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
}
......
......@@ -7,13 +7,14 @@ import (
"net"
)
type TcpClient struct {
type TcpUdpClient struct {
baseTunnel
Net string
link *Link //作为客户端的连接
}
func (c *TcpClient) Open() error {
func (c *TcpUdpClient) 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 *TcpUdpClient) 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 *TcpUdpClient) GetLink(id int64) (*Link, error) {
return c.link, nil
}
func (c *TcpClient) receive(conn net.Conn) {
func (c *TcpUdpClient) receive(conn net.Conn) {
//复用地连接
if c.link == nil {
link := newLink(c, conn)
......
package core
type UdpClient TcpClient
......@@ -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)
......
......@@ -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.
先完成此消息的编辑!
想要评论请 注册