gf: github.com/gogf/gf/net/gtcp Index | Files

package gtcp

import "github.com/gogf/gf/net/gtcp"

Package gtcp provides TCP server and client implementations.

Index

Package Files

gtcp.go gtcp_conn.go gtcp_conn_pkg.go gtcp_func.go gtcp_func_pkg.go gtcp_pool.go gtcp_pool_pkg.go gtcp_server.go

func LoadKeyCrt Uses

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

LoadKeyCrt creates and returns a TLS configuration object with given certificate and key files.

func NewNetConn Uses

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

NewNetConn creates and returns a net.Conn with given address like "127.0.0.1:80". The optional parameter <timeout> specifies the timeout for dialing connection.

func NewNetConnKeyCrt Uses

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

NewNetConnKeyCrt creates and returns a TLS net.Conn with given TLS certificate and key files and address like "127.0.0.1:80". The optional parameter <timeout> specifies the timeout for dialing connection.

func NewNetConnTLS Uses

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

NewNetConnTLS creates and returns a TLS net.Conn with given address like "127.0.0.1:80". The optional parameter <timeout> specifies the timeout for dialing connection.

func Send Uses

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

Send creates connection to <address>, writes <data> to the connection and then closes the connection. The optional parameter <retry> specifies the retry policy when fails in writing data.

func SendPkg Uses

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

SendPkg sends a package containing <data> to <address> and closes the connection. The optional parameter <option> specifies the package options for sending.

func SendPkgWithTimeout Uses

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

SendPkgWithTimeout sends a package containing <data> to <address> with timeout limitation and closes the connection. The optional parameter <option> specifies the package options for sending.

func SendRecv Uses

func SendRecv(address string, data []byte, length int, retry ...Retry) ([]byte, error)

SendRecv creates connection to <address>, writes <data> to the connection, receives response and then closes the connection.

The parameter <length> specifies the bytes count waiting to receive. It receives all buffer content and returns if <length> is -1.

The optional parameter <retry> specifies the retry policy when fails in writing data.

func SendRecvPkg Uses

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

SendRecvPkg sends a package containing <data> to <address>, receives the response and closes the connection. The optional parameter <option> specifies the package options for sending.

func SendRecvPkgWithTimeout Uses

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

SendRecvPkgWithTimeout sends a package containing <data> to <address>, receives the response with timeout limitation and closes the connection. The optional parameter <option> specifies the package options for sending.

func SendRecvWithTimeout Uses

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

SendRecvWithTimeout does SendRecv logic with reading timeout limitation.

func SendWithTimeout Uses

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

SendWithTimeout does Send logic with writing timeout limitation.

type Conn Uses

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

TCP connection object.

func NewConn Uses

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

NewConn creates and returns a new connection with given address.

func NewConnByNetConn Uses

func NewConnByNetConn(conn net.Conn) *Conn

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

func NewConnKeyCrt Uses

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 Uses

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 Uses

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

Recv receives and returns data from the connection.

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

It is the most commonly used length value for data receiving.

func (*Conn) RecvLine Uses

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

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

func (*Conn) RecvPkg Uses

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

RecvPkg receives data from connection using simple package protocol.

func (*Conn) RecvPkgWithTimeout Uses

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) RecvTil Uses

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

RecvTil reads data from the connection until reads bytes <til>. Note that the returned result contains the last bytes <til>.

func (*Conn) RecvWithTimeout Uses

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

RecvWithTimeout reads data from the connection with timeout.

func (*Conn) Send Uses

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

Send writes data to remote address.

func (*Conn) SendPkg Uses

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. The integer bytes of the package are encoded using BigEndian order.

func (*Conn) SendPkgWithTimeout Uses

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 Uses

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

SendRecv writes data to the connection and blocks reading response.

func (*Conn) SendRecvPkg Uses

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 Uses

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 Uses

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

SendRecvWithTimeout writes data to the connection and reads response with timeout.

func (*Conn) SendWithTimeout Uses

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

SendWithTimeout writes data to the connection with timeout.

func (*Conn) SetDeadline Uses

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

func (*Conn) SetRecvBufferWait Uses

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 Uses

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

func (*Conn) SetSendDeadline Uses

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

type PkgOption Uses

type PkgOption struct {
    // HeaderSize is used to mark the data length for next data receiving.
    // It's 2 bytes in default, 4 bytes max, which stands for the max data length
    // from 65535 to 4294967295 bytes.
    HeaderSize int

    // MaxDataSize is the data field size in bytes for data length validation.
    // If it's not manually set, it'll automatically be set correspondingly with the HeaderSize.
    MaxDataSize int

    // Retry policy when operation fails.
    Retry Retry
}

Package option for simple protocol.

type PoolConn Uses

type PoolConn struct {
    *Conn // Underlying connection object.
    // contains filtered or unexported fields
}

PoolConn is a connection with pool feature for TCP. Note that it is NOT a pool or connection manager, it is just a TCP connection object.

func NewPoolConn Uses

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

NewPoolConn creates and returns a connection with pool feature.

func (*PoolConn) Close Uses

func (c *PoolConn) Close() error

Close puts back the connection to the pool if it's active, or closes the connection if it's not active.

Note that, if <c> calls Close function closing itself, <c> can not be used again.

func (*PoolConn) Recv Uses

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

Recv receives data from the connection.

func (*PoolConn) RecvLine Uses

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

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

func (*PoolConn) RecvPkg Uses

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

RecvPkg receives package from connection using simple package protocol. The optional parameter <option> specifies the package options for receiving.

func (*PoolConn) RecvPkgWithTimeout Uses

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

RecvPkgWithTimeout reads data from connection with timeout using simple package protocol.

func (*PoolConn) RecvTil Uses

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

RecvTil reads data from the connection until reads bytes <til>. Note that the returned result contains the last bytes <til>.

func (*PoolConn) RecvWithTimeout Uses

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

RecvWithTimeout reads data from the connection with timeout.

func (*PoolConn) Send Uses

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

Send writes data to the connection. It retrieves a new connection from its pool if it fails writing data.

func (*PoolConn) SendPkg Uses

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

SendPkg sends a package containing <data> to the connection. The optional parameter <option> specifies the package options for sending.

func (*PoolConn) SendPkgWithTimeout Uses

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

SendPkgWithTimeout writes data to connection with timeout using simple package protocol.

func (*PoolConn) SendRecv Uses

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

SendRecv writes data to the connection and blocks reading response.

func (*PoolConn) SendRecvPkg Uses

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

SendRecvPkg writes data to connection and blocks reading response using simple package protocol.

func (*PoolConn) SendRecvPkgWithTimeout Uses

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

RecvPkgWithTimeout reads data from connection with timeout using simple package protocol.

func (*PoolConn) SendRecvWithTimeout Uses

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

SendRecvWithTimeout writes data to the connection and reads response with timeout.

func (*PoolConn) SendWithTimeout Uses

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

SendWithTimeout writes data to the connection with timeout.

type Retry Uses

type Retry struct {
    Count    int           // Retry count.
    Interval time.Duration // Retry interval.
}

type Server Uses

type Server struct {
    // contains filtered or unexported fields
}

TCP Server.

func GetServer Uses

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 Uses

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 Uses

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 Uses

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 Uses

func (s *Server) Close() error

Close closes the listener and shutdowns the server.

func (*Server) Run Uses

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

Run starts running the TCP Server.

func (*Server) SetAddress Uses

func (s *Server) SetAddress(address string)

SetAddress sets the listening address for server.

func (*Server) SetHandler Uses

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

SetHandler sets the connection handler for server.

func (*Server) SetTLSConfig Uses

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

SetTlsConfig sets the TLS configuration of server.

func (*Server) SetTLSKeyCrt Uses

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

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

Package gtcp imports 16 packages (graph) and is imported by 2 packages. Updated 2020-04-22. Refresh now. Tools for package owners.