gtcp

package
v1.9.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 14, 2019 License: MIT Imports: 15 Imported by: 17

Documentation

Overview

Package gtcp provides TCP server and client implementations.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func LoadKeyCrt

func LoadKeyCrt(crtFile, keyFile string) (*tls.Config, error)

根据证书和密钥生成TLS对象

func NewNetConn

func NewNetConn(addr string, timeout ...int) (net.Conn, error)

创建原生TCP链接, addr地址格式形如:127.0.0.1:80

func NewNetConnKeyCrt

func NewNetConnKeyCrt(addr, crtFile, keyFile string) (net.Conn, error)

根据给定的证书和密钥文件创建支持TLS的原生TCP链接, addr地址格式形如:127.0.0.1:80

func NewNetConnTLS

func NewNetConnTLS(addr string, tlsConfig *tls.Config) (net.Conn, error)

创建支持TLS的原生TCP链接, addr地址格式形如:127.0.0.1:80

func Send

func Send(addr string, data []byte, retry ...Retry) error

(面向短链接)发送数据

func SendPkg

func SendPkg(addr string, data []byte, option ...PkgOption) error

简单协议: (面向短链接)发送消息包

func SendPkgWithTimeout

func SendPkgWithTimeout(addr string, data []byte, timeout time.Duration, option ...PkgOption) error

简单协议: (面向短链接)带超时时间的数据发送

func SendRecv

func SendRecv(addr string, data []byte, receive int, retry ...Retry) ([]byte, error)

(面向短链接)发送数据并等待接收返回数据

func SendRecvPkg

func SendRecvPkg(addr string, data []byte, option ...PkgOption) ([]byte, error)

简单协议: (面向短链接)发送数据并等待接收返回数据

func SendRecvPkgWithTimeout

func SendRecvPkgWithTimeout(addr string, data []byte, timeout time.Duration, option ...PkgOption) ([]byte, error)

简单协议: (面向短链接)发送数据并等待接收返回数据(带返回超时等待时间)

func SendRecvWithTimeout

func SendRecvWithTimeout(addr string, data []byte, receive int, timeout time.Duration, retry ...Retry) ([]byte, error)

(面向短链接)发送数据并等待接收返回数据(带返回超时等待时间)

func SendWithTimeout

func SendWithTimeout(addr string, data []byte, timeout time.Duration, retry ...Retry) error

(面向短链接)带超时时间的数据发送

Types

type Conn

type Conn struct {
	net.Conn // Underlying TCP connection object.
	// contains filtered or unexported fields
}

TCP connection object.

func NewConn

func NewConn(addr string, timeout ...int) (*Conn, error)

NewConn creates and returns a new connection with given address.

func NewConnByNetConn

func NewConnByNetConn(conn net.Conn) *Conn

NewConnByNetConn creates and returns a TCP connection object with given net.Conn object.

func NewConnKeyCrt

func NewConnKeyCrt(addr, crtFile, keyFile string) (*Conn, error)

NewConnKeyCrt creates and returns a new TLS connection with given address and TLS certificate and key files.

func NewConnTLS

func NewConnTLS(addr string, tlsConfig *tls.Config) (*Conn, error)

NewConnTLS creates and returns a new TLS connection with given address and TLS configuration.

func (*Conn) Recv

func (c *Conn) Recv(length int, retry ...Retry) ([]byte, error)

Recv receives data from remote address.

Note that,

  1. If length = 0, it means it receives the data from current buffer and returns immediately.
  2. 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.
  3. If length > 0, it means it blocks reading data from connection until length size was received.

func (*Conn) RecvLine

func (c *Conn) RecvLine(retry ...Retry) ([]byte, error)

RecvLine reads data from connection until reads char '\n'. Note that the returned result does not contain char '\n'.

func (*Conn) RecvPkg

func (c *Conn) RecvPkg(option ...PkgOption) (result []byte, err error)

Recv receives data from connection using simple package protocol.

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) Send

func (c *Conn) Send(data []byte, retry ...Retry) error

Send writes data to remote address.

func (*Conn) SendPkg

func (c *Conn) SendPkg(data []byte, option ...PkgOption) error

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) SendRecv

func (c *Conn) SendRecv(data []byte, receive int, retry ...Retry) ([]byte, error)

SendRecv writes data to connection and blocks reading response.

func (*Conn) SendRecvPkg

func (c *Conn) SendRecvPkg(data []byte, option ...PkgOption) ([]byte, error)

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

func (c *Conn) SendWithTimeout(data []byte, timeout time.Duration, retry ...Retry) (err error)

SendWithTimeout writes data to connection with timeout.

func (*Conn) SetDeadline

func (c *Conn) SetDeadline(t time.Time) error

func (*Conn) SetRecvBufferWait

func (c *Conn) SetRecvBufferWait(bufferWaitDuration time.Duration)

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.

func (*Conn) SetRecvDeadline

func (c *Conn) SetRecvDeadline(t time.Time) error

func (*Conn) SetSendDeadline

func (c *Conn) SetSendDeadline(t time.Time) error

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 NewPoolConn

func NewPoolConn(addr string, timeout ...int) (*PoolConn, error)

创建TCP链接池对象

func (*PoolConn) Close

func (c *PoolConn) Close() error

(方法覆盖)覆盖底层接口对象的Close方法

func (*PoolConn) Recv

func (c *PoolConn) Recv(length int, retry ...Retry) ([]byte, error)

(方法覆盖)接收数据

func (*PoolConn) RecvLine

func (c *PoolConn) RecvLine(retry ...Retry) ([]byte, error)

(方法覆盖)按行读取数据,阻塞读取,直到完成一行读取位置(末尾以'\n'结尾,返回数据不包含换行符)

func (*PoolConn) RecvPkg

func (c *PoolConn) RecvPkg(option ...PkgOption) ([]byte, error)

简单协议: (方法覆盖)接收数据

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) Send

func (c *PoolConn) Send(data []byte, retry ...Retry) error

(方法覆盖)发送数据

func (*PoolConn) SendPkg

func (c *PoolConn) SendPkg(data []byte, option ...PkgOption) (err error)

简单协议: (方法覆盖)发送数据

func (*PoolConn) SendPkgWithTimeout

func (c *PoolConn) SendPkgWithTimeout(data []byte, timeout time.Duration, option ...PkgOption) (err error)

简单协议: (方法覆盖)带超时时间的数据发送

func (*PoolConn) SendRecv

func (c *PoolConn) SendRecv(data []byte, receive int, retry ...Retry) ([]byte, error)

(方法覆盖)发送数据并等待接收返回数据

func (*PoolConn) SendRecvPkg

func (c *PoolConn) SendRecvPkg(data []byte, option ...PkgOption) ([]byte, error)

简单协议: (方法覆盖)发送数据并等待接收返回数据

func (*PoolConn) SendRecvPkgWithTimeout

func (c *PoolConn) SendRecvPkgWithTimeout(data []byte, timeout time.Duration, option ...PkgOption) ([]byte, error)

简单协议: (方法覆盖)发送数据并等待接收返回数据(带返回超时等待时间)

func (*PoolConn) SendRecvWithTimeout

func (c *PoolConn) SendRecvWithTimeout(data []byte, receive int, timeout time.Duration, retry ...Retry) ([]byte, error)

(方法覆盖)发送数据并等待接收返回数据(带返回超时等待时间)

func (*PoolConn) SendWithTimeout

func (c *PoolConn) SendWithTimeout(data []byte, timeout time.Duration, retry ...Retry) (err error)

(方法覆盖)带超时时间的数据发送

type Retry

type Retry struct {
	Count    int // 重试次数
	Interval int // 重试间隔(毫秒)
}

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

func NewServer(address string, handler func(*Conn), name ...string) *Server

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

func NewServerKeyCrt(address, crtFile, keyFile string, handler func(*Conn), name ...string) *Server

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) Close

func (s *Server) Close() error

Close closes the listener and shutdowns the server.

func (*Server) Run

func (s *Server) Run() (err error)

Run starts running the TCP Server.

func (*Server) SetAddress

func (s *Server) SetAddress(address string)

SetAddress sets the listening address for server.

func (*Server) SetHandler

func (s *Server) SetHandler(handler func(*Conn))

SetHandler sets the connection handler for server.

func (*Server) SetTLSConfig

func (s *Server) SetTLSConfig(tlsConfig *tls.Config)

SetTlsConfig sets the TLS configuration of server.

func (*Server) SetTLSKeyCrt

func (s *Server) SetTLSKeyCrt(crtFile, keyFile string) error

SetTlsKeyCrt sets the certificate and key file for TLS configuration of server.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL