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 ¶
type Conn struct { net.Conn // Underlying TCP connection object. // contains filtered or unexported fields }
TCP connection object.
func NewConnByNetConn ¶
NewConnByNetConn creates and returns a TCP connection object with given net.Conn object.
func NewConnKeyCrt ¶
NewConnKeyCrt creates and returns a new TLS connection with given address and TLS certificate and key files.
func NewConnTLS ¶
NewConnTLS creates and returns a new TLS connection with given address and TLS configuration.
func (*Conn) Recv ¶
Recv receives data from remote address.
Note that,
- If length = 0, it means it receives the data from current buffer and returns immediately.
- If length < 0, it means it receives all data from buffer and returns if it waits til no data from connection. Developers should notice the package parsing yourself if you decide receiving all data from buffer.
- If length > 0, it means it blocks reading data from connection until length size was received.
func (*Conn) RecvLine ¶
RecvLine reads data from connection until reads char '\n'. Note that the returned result does not contain char '\n'.
func (*Conn) RecvPkgWithTimeout ¶
func (c *Conn) RecvPkgWithTimeout(timeout time.Duration, option ...PkgOption) (data []byte, err error)
RecvPkgWithTimeout reads data from connection with timeout using simple package protocol.
func (*Conn) RecvWithTimeout ¶
func (c *Conn) RecvWithTimeout(length int, timeout time.Duration, retry ...Retry) (data []byte, err error)
RecvWithTimeout reads data from connection with timeout.
func (*Conn) SendPkg ¶
SendPkg send data using simple package protocol.
Simple package protocol: DataLength(24bit)|DataField(variant)。
Note that, 1. The DataLength is the length of DataField, which does not contain the header size 2 bytes. 2. The integer bytes of the package are encoded using BigEndian order.
func (*Conn) SendPkgWithTimeout ¶
func (c *Conn) SendPkgWithTimeout(data []byte, timeout time.Duration, option ...PkgOption) (err error)
SendPkgWithTimeout writes data to connection with timeout using simple package protocol.
func (*Conn) SendRecvPkg ¶
SendRecvPkg writes data to connection and blocks reading response using simple package protocol.
func (*Conn) SendRecvPkgWithTimeout ¶
func (c *Conn) SendRecvPkgWithTimeout(data []byte, timeout time.Duration, option ...PkgOption) ([]byte, error)
SendRecvPkgWithTimeout writes data to connection and reads response with timeout using simple package protocol.
func (*Conn) SendRecvWithTimeout ¶
func (c *Conn) SendRecvWithTimeout(data []byte, receive int, timeout time.Duration, retry ...Retry) ([]byte, error)
SendRecvWithTimeout writes data to connection and reads response with timeout.
func (*Conn) SendWithTimeout ¶
SendWithTimeout writes data to connection with timeout.
func (*Conn) SetRecvBufferWait ¶
SetRecvBufferWait sets the buffer waiting timeout when reading all data from connection. The waiting duration cannot be too long which might delay receiving data from remote address.
type PkgOption ¶
type PkgOption struct { HeaderSize int // It's 2 bytes in default, max is 4 bytes. MaxDataSize int // (Byte)data field size, it's 2 bytes in default, which means 65535 bytes. Retry Retry // Retry policy. }
Package option for simple protocol.
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.