Documentation ¶
Overview ¶
Package gtcp provides TCP server and client implementations.
Index ¶
- func LoadKeyCrt(crtFile, keyFile string) (*tls.Config, error)
- func NewNetConn(addr string, timeout ...int) (net.Conn, error)
- func NewNetConnKeyCrt(addr, crtFile, keyFile string) (net.Conn, error)
- func NewNetConnTLS(addr string, tlsConfig *tls.Config) (net.Conn, error)
- func Send(addr string, data []byte, retry ...Retry) error
- func SendPkg(addr string, data []byte, option ...PkgOption) error
- func SendPkgWithTimeout(addr string, data []byte, timeout time.Duration, option ...PkgOption) error
- func SendRecv(addr string, data []byte, receive int, retry ...Retry) ([]byte, error)
- func SendRecvPkg(addr string, data []byte, option ...PkgOption) ([]byte, error)
- func SendRecvPkgWithTimeout(addr string, data []byte, timeout time.Duration, option ...PkgOption) ([]byte, error)
- func SendRecvWithTimeout(addr string, data []byte, receive int, timeout time.Duration, retry ...Retry) ([]byte, error)
- func SendWithTimeout(addr string, data []byte, timeout time.Duration, retry ...Retry) error
- type Conn
- func (c *Conn) Recv(length int, retry ...Retry) ([]byte, error)
- func (c *Conn) RecvLine(retry ...Retry) ([]byte, error)
- func (c *Conn) RecvPkg(option ...PkgOption) (result []byte, err error)
- func (c *Conn) RecvPkgWithTimeout(timeout time.Duration, option ...PkgOption) (data []byte, err error)
- func (c *Conn) RecvWithTimeout(length int, timeout time.Duration, retry ...Retry) (data []byte, err error)
- func (c *Conn) Send(data []byte, retry ...Retry) error
- func (c *Conn) SendPkg(data []byte, option ...PkgOption) error
- func (c *Conn) SendPkgWithTimeout(data []byte, timeout time.Duration, option ...PkgOption) (err error)
- func (c *Conn) SendRecv(data []byte, receive int, retry ...Retry) ([]byte, error)
- func (c *Conn) SendRecvPkg(data []byte, option ...PkgOption) ([]byte, error)
- func (c *Conn) SendRecvPkgWithTimeout(data []byte, timeout time.Duration, option ...PkgOption) ([]byte, error)
- func (c *Conn) SendRecvWithTimeout(data []byte, receive int, timeout time.Duration, retry ...Retry) ([]byte, error)
- func (c *Conn) SendWithTimeout(data []byte, timeout time.Duration, retry ...Retry) (err error)
- func (c *Conn) SetDeadline(t time.Time) error
- func (c *Conn) SetRecvBufferWait(bufferWaitDuration time.Duration)
- func (c *Conn) SetRecvDeadline(t time.Time) error
- func (c *Conn) SetSendDeadline(t time.Time) error
- type PkgOption
- type PoolConn
- func (c *PoolConn) Close() error
- func (c *PoolConn) Recv(length int, retry ...Retry) ([]byte, error)
- func (c *PoolConn) RecvLine(retry ...Retry) ([]byte, error)
- func (c *PoolConn) RecvPkg(option ...PkgOption) ([]byte, error)
- func (c *PoolConn) RecvPkgWithTimeout(timeout time.Duration, option ...PkgOption) (data []byte, err error)
- func (c *PoolConn) RecvWithTimeout(length int, timeout time.Duration, retry ...Retry) (data []byte, err error)
- func (c *PoolConn) Send(data []byte, retry ...Retry) error
- func (c *PoolConn) SendPkg(data []byte, option ...PkgOption) (err error)
- func (c *PoolConn) SendPkgWithTimeout(data []byte, timeout time.Duration, option ...PkgOption) (err error)
- func (c *PoolConn) SendRecv(data []byte, receive int, retry ...Retry) ([]byte, error)
- func (c *PoolConn) SendRecvPkg(data []byte, option ...PkgOption) ([]byte, error)
- func (c *PoolConn) SendRecvPkgWithTimeout(data []byte, timeout time.Duration, option ...PkgOption) ([]byte, error)
- func (c *PoolConn) SendRecvWithTimeout(data []byte, receive int, timeout time.Duration, retry ...Retry) ([]byte, error)
- func (c *PoolConn) SendWithTimeout(data []byte, timeout time.Duration, retry ...Retry) (err error)
- type Retry
- type Server
- func GetServer(name ...interface{}) *Server
- func NewServer(address string, handler func(*Conn), name ...string) *Server
- func NewServerKeyCrt(address, crtFile, keyFile string, handler func(*Conn), name ...string) *Server
- func NewServerTLS(address string, tlsConfig *tls.Config, handler func(*Conn), name ...string) *Server
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewNetConn ¶
创建原生TCP链接, addr地址格式形如:127.0.0.1:80
func NewNetConnKeyCrt ¶
根据给定的证书和密钥文件创建支持TLS的原生TCP链接, addr地址格式形如:127.0.0.1:80
func NewNetConnTLS ¶
创建支持TLS的原生TCP链接, addr地址格式形如:127.0.0.1:80
func SendPkgWithTimeout ¶
简单协议: (面向短链接)带超时时间的数据发送
func SendRecvPkg ¶
简单协议: (面向短链接)发送数据并等待接收返回数据
func SendRecvPkgWithTimeout ¶
func SendRecvPkgWithTimeout(addr string, data []byte, timeout time.Duration, option ...PkgOption) ([]byte, error)
简单协议: (面向短链接)发送数据并等待接收返回数据(带返回超时等待时间)
Types ¶
type Conn ¶
封装的链接对象
func NewConnKeyCrt ¶
根据证书和密钥文件创建支持TLS加密通信的TCP链接
func NewConnTLS ¶
创建支持TLS加密通信的TCP链接
func (*Conn) Recv ¶
阻塞等待获取指定读取的数据长度,并给定重试策略。
需要注意: 1、往往在socket通信中需要指定固定的数据结构,并在设定对应的长度字段,并在读取数据时便于区分包大小; 2、当length < 0时表示获取缓冲区所有的数据,但是可能会引起包解析问题(可能出现粘包/断包情况),因此需要解析端注意解析策略; 3、当length = 0时表示获取一次缓冲区的数据后立即返回;
func (*Conn) RecvPkgWithTimeout ¶
func (c *Conn) RecvPkgWithTimeout(timeout time.Duration, option ...PkgOption) (data []byte, err error)
简单协议: 带超时时间的消息包获取
func (*Conn) RecvWithTimeout ¶
func (c *Conn) RecvWithTimeout(length int, timeout time.Duration, retry ...Retry) (data []byte, err error)
带超时时间的数据获取
func (*Conn) SendPkg ¶
根据简单协议发送数据包。
简单协议数据格式:数据长度(24bit)|数据字段(变长)。
注意: 1. "数据长度"仅为"数据字段"的长度,不包含头信息的长度字段3字节。 2. 由于"数据长度"为3字节,并且使用的BigEndian字节序,因此这里最后返回的buffer使用了buffer[1:]。
func (*Conn) SendPkgWithTimeout ¶
func (c *Conn) SendPkgWithTimeout(data []byte, timeout time.Duration, option ...PkgOption) (err error)
简单协议: 带超时时间的数据发送
func (*Conn) SendRecvPkg ¶
简单协议: 发送数据并等待接收返回数据
func (*Conn) SendRecvPkgWithTimeout ¶
func (c *Conn) SendRecvPkgWithTimeout(data []byte, timeout time.Duration, option ...PkgOption) ([]byte, error)
简单协议: 发送数据并等待接收返回数据(带返回超时等待时间)
func (*Conn) SendRecvWithTimeout ¶
func (c *Conn) SendRecvWithTimeout(data []byte, receive int, timeout time.Duration, retry ...Retry) ([]byte, error)
发送数据并等待接收返回数据(带返回超时等待时间)
func (*Conn) SendWithTimeout ¶
带超时时间的数据发送
func (*Conn) SetRecvBufferWait ¶
读取全部缓冲区数据时,读取完毕后的写入等待间隔,如果超过该等待时间后仍无可读数据,那么读取操作返回。 该时间间隔不能设置得太大,会影响Recv读取时长(默认为1毫秒)。
type PkgOption ¶
type PkgOption struct { HeaderSize int // 自定义头大小(默认为2字节,最大不能超过4字节) MaxDataSize int // (byte)数据读取的最大包大小,默认最大不能超过2字节(65535 byte) Retry Retry // 失败重试 }
数据读取选项
type PoolConn ¶
type PoolConn struct { *Conn // 继承底层链接接口对象 // contains filtered or unexported fields }
链接池链接对象
func (*PoolConn) RecvPkgWithTimeout ¶
func (c *PoolConn) RecvPkgWithTimeout(timeout time.Duration, option ...PkgOption) (data []byte, err error)
简单协议: (方法覆盖)带超时时间的数据获取
func (*PoolConn) RecvWithTimeout ¶
func (c *PoolConn) RecvWithTimeout(length int, timeout time.Duration, retry ...Retry) (data []byte, err error)
(方法覆盖)带超时时间的数据获取
func (*PoolConn) SendPkgWithTimeout ¶
func (c *PoolConn) SendPkgWithTimeout(data []byte, timeout time.Duration, option ...PkgOption) (err error)
简单协议: (方法覆盖)带超时时间的数据发送
func (*PoolConn) SendRecvPkg ¶
简单协议: (方法覆盖)发送数据并等待接收返回数据
func (*PoolConn) SendRecvPkgWithTimeout ¶
func (c *PoolConn) SendRecvPkgWithTimeout(data []byte, timeout time.Duration, option ...PkgOption) ([]byte, error)
简单协议: (方法覆盖)发送数据并等待接收返回数据(带返回超时等待时间)
type Server ¶
type Server struct {
// contains filtered or unexported fields
}
TCP Server.
func GetServer ¶
func GetServer(name ...interface{}) *Server
GetServer returns the TCP server with specified <name>, or it returns a new normal TCP server named <name> if it does not exist. The parameter <name> is used to specify the TCP server
func NewServer ¶
NewServer creates and returns a new normal TCP server. The parameter <name> is optional, which is used to specify the instance name of the server.
func NewServerKeyCrt ¶
NewServerKeyCrt creates and returns a new TCP server with TLS support. The parameter <name> is optional, which is used to specify the instance name of the server.
func NewServerTLS ¶
func NewServerTLS(address string, tlsConfig *tls.Config, handler func(*Conn), name ...string) *Server
NewServerTLS creates and returns a new TCP server with TLS support. The parameter <name> is optional, which is used to specify the instance name of the server.
func (*Server) SetAddress ¶
SetAddress sets the listening address for server.
func (*Server) SetHandler ¶
SetHandler sets the connection handler for server.
func (*Server) SetTLSConfig ¶
SetTlsConfig sets the TLS configuration of server.
func (*Server) SetTLSKeyCrt ¶
SetTlsKeyCrt sets the certificate and key file for TLS configuration of server.