Documentation ¶
Overview ¶
包`gtcp`提供了TCP服务器和客户端实现。 md5:8981c5b21f0ab245
Index ¶
- Constants
- func GetFreePort() (port int, err error)
- func GetFreePorts(count int) (ports []int, err error)
- func LoadKeyCrt(crtFile, keyFile string) (*tls.Config, error)
- func MustGetFreePort() int
- func NewNetConn(address string, timeout ...time.Duration) (net.Conn, error)
- func NewNetConnKeyCrt(addr, crtFile, keyFile string, timeout ...time.Duration) (net.Conn, error)
- func NewNetConnTLS(address string, tlsConfig *tls.Config, timeout ...time.Duration) (net.Conn, error)
- func Send(address string, data []byte, retry ...X结构_Retry) error
- func SendPkg(address string, data []byte, option ...X结构_PkgOption) error
- func SendPkgWithTimeout(address string, data []byte, timeout time.Duration, ...) error
- func SendRecv(address string, data []byte, length int, retry ...X结构_Retry) ([]byte, error)
- func SendRecvPkg(address string, data []byte, option ...X结构_PkgOption) ([]byte, error)
- func SendRecvPkgWithTimeout(address string, data []byte, timeout time.Duration, ...) ([]byte, error)
- func SendRecvWithTimeout(address string, data []byte, receive int, timeout time.Duration, ...) ([]byte, error)
- func SendWithTimeout(address string, data []byte, timeout time.Duration, retry ...X结构_Retry) error
- type X结构_Conn
- func (c *X结构_Conn) Recv(length int, retry ...X结构_Retry) ([]byte, error)
- func (c *X结构_Conn) RecvLine(retry ...X结构_Retry) ([]byte, error)
- func (c *X结构_Conn) RecvPkg(option ...X结构_PkgOption) (result []byte, err error)
- func (c *X结构_Conn) RecvPkgWithTimeout(timeout time.Duration, option ...X结构_PkgOption) (data []byte, err error)
- func (c *X结构_Conn) RecvTill(til []byte, retry ...X结构_Retry) ([]byte, error)
- func (c *X结构_Conn) RecvWithTimeout(length int, timeout time.Duration, retry ...X结构_Retry) (data []byte, err error)
- func (c *X结构_Conn) Send(data []byte, retry ...X结构_Retry) error
- func (c *X结构_Conn) SendPkg(data []byte, option ...X结构_PkgOption) error
- func (c *X结构_Conn) SendPkgWithTimeout(data []byte, timeout time.Duration, option ...X结构_PkgOption) (err error)
- func (c *X结构_Conn) SendRecv(data []byte, length int, retry ...X结构_Retry) ([]byte, error)
- func (c *X结构_Conn) SendRecvPkg(data []byte, option ...X结构_PkgOption) ([]byte, error)
- func (c *X结构_Conn) SendRecvPkgWithTimeout(data []byte, timeout time.Duration, option ...X结构_PkgOption) ([]byte, error)
- func (c *X结构_Conn) SendRecvWithTimeout(data []byte, length int, timeout time.Duration, retry ...X结构_Retry) ([]byte, error)
- func (c *X结构_Conn) SendWithTimeout(data []byte, timeout time.Duration, retry ...X结构_Retry) (err error)
- func (c *X结构_Conn) SetBufferWaitRecv(bufferWaitDuration time.Duration)
- func (c *X结构_Conn) SetDeadline(t time.Time) (err error)
- func (c *X结构_Conn) SetDeadlineRecv(t time.Time) (err error)
- func (c *X结构_Conn) SetDeadlineSend(t time.Time) (err error)
- type X结构_PkgOption
- type X结构_PoolConn
- func (c *X结构_PoolConn) Close() error
- func (c *X结构_PoolConn) Recv(length int, retry ...X结构_Retry) ([]byte, error)
- func (c *X结构_PoolConn) RecvLine(retry ...X结构_Retry) ([]byte, error)
- func (c *X结构_PoolConn) RecvPkg(option ...X结构_PkgOption) ([]byte, error)
- func (c *X结构_PoolConn) RecvPkgWithTimeout(timeout time.Duration, option ...X结构_PkgOption) (data []byte, err error)
- func (c *X结构_PoolConn) RecvTill(til []byte, retry ...X结构_Retry) ([]byte, error)
- func (c *X结构_PoolConn) RecvWithTimeout(length int, timeout time.Duration, retry ...X结构_Retry) (data []byte, err error)
- func (c *X结构_PoolConn) Send(data []byte, retry ...X结构_Retry) error
- func (c *X结构_PoolConn) SendPkg(data []byte, option ...X结构_PkgOption) (err error)
- func (c *X结构_PoolConn) SendPkgWithTimeout(data []byte, timeout time.Duration, option ...X结构_PkgOption) (err error)
- func (c *X结构_PoolConn) SendRecv(data []byte, receive int, retry ...X结构_Retry) ([]byte, error)
- func (c *X结构_PoolConn) SendRecvPkg(data []byte, option ...X结构_PkgOption) ([]byte, error)
- func (c *X结构_PoolConn) SendRecvPkgWithTimeout(data []byte, timeout time.Duration, option ...X结构_PkgOption) ([]byte, error)
- func (c *X结构_PoolConn) SendRecvWithTimeout(data []byte, receive int, timeout time.Duration, retry ...X结构_Retry) ([]byte, error)
- func (c *X结构_PoolConn) SendWithTimeout(data []byte, timeout time.Duration, retry ...X结构_Retry) (err error)
- type X结构_Retry
- type X结构_Server
- func GetServer(name ...interface{}) *X结构_Server
- func NewServer(address string, handler func(*X结构_Conn), name ...string) *X结构_Server
- func NewServerKeyCrt(address, crtFile, keyFile string, handler func(*X结构_Conn), name ...string) (*X结构_Server, error)
- func NewServerTLS(address string, tlsConfig *tls.Config, handler func(*X结构_Conn), ...) *X结构_Server
- func (s *X结构_Server) Close() error
- func (s *X结构_Server) GetAddress() string
- func (s *X结构_Server) GetListenedAddress() string
- func (s *X结构_Server) GetListenedPort() int
- func (s *X结构_Server) Run() (err error)
- func (s *X结构_Server) SetAddress(address string)
- func (s *X结构_Server) SetHandler(handler func(*X结构_Conn))
- func (s *X结构_Server) SetTLSConfig(tlsConfig *tls.Config)
- func (s *X结构_Server) SetTLSKeyCrt(crtFile, keyFile string) error
Examples ¶
Constants ¶
const (
// X常量_FreePortAddress 标记服务器使用随机的空闲端口进行监听。 md5:16e8ca0633c4a135
X常量_FreePortAddress = ":0"
)
Variables ¶
This section is empty.
Functions ¶
func GetFreePort ¶
GetFreePort 获取并返回一个空闲的端口号。 md5:52dbf7a2d6e71da6
Example ¶
package main import ( "fmt" gtcp "gitee.com/go_888/goframe/net/gtcp" ) func main() { fmt.Println(gtcp.GetFreePort()) // May Output: // 57429 <nil> }
Output:
func GetFreePorts ¶
GetFreePorts 获取并返回指定数量的空闲端口。 md5:ea99fb15b5bbc0fb
Example ¶
package main import ( "fmt" gtcp "gitee.com/go_888/goframe/net/gtcp" ) func main() { fmt.Println(gtcp.GetFreePorts(2)) // May Output: // [57743 57744] <nil> }
Output:
func LoadKeyCrt ¶
LoadKeyCrt 根据给定的证书和密钥文件创建并返回一个 TLS 配置对象。 md5:e31385756c06b0a4
func MustGetFreePort ¶
func MustGetFreePort() int
MustGetFreePort 的行为与 GetFreePort 相同,但如果发生任何错误,它会直接 panic。 md5:a1ae43bc1faffe59
func NewNetConn ¶
NewNetConn 创建并返回一个具有给定地址(如 "127.0.0.1:80")的net.Conn。 可选参数 `timeout` 指定了建立连接的超时时间。 md5:2e0124ac2d5ba04b
func NewNetConnKeyCrt ¶
NewNetConnKeyCrt 创建并返回一个带有给定TLS证书和密钥文件的TLS net.Conn,地址类似于"127.0.0.1:80"。可选参数`timeout`指定了连接超时时间。 md5:232eecc025740731
func NewNetConnTLS ¶
func NewNetConnTLS(address string, tlsConfig *tls.Config, timeout ...time.Duration) (net.Conn, error)
NewNetConnTLS 创建并返回一个具有给定地址(如 "127.0.0.1:80")的 TLS net.Conn。 可选参数 `timeout` 指定了建立连接时的超时时间。 md5:5eb25eb4d9f5078a
func Send ¶
Send 建立连接到 `address`,向连接写入 `data`,然后关闭连接。 可选参数 `retry` 指定在写入数据失败时的重试策略。 md5:657cbdf2b2958d6f
func SendPkg ¶
func SendPkg(address string, data []byte, option ...X结构_PkgOption) error
SendPkg 将包含 `data` 的包发送到 `address`,并关闭连接。可选参数 `option` 指定了发送包的选项。 md5:45d7e35d28ec87b6
func SendPkgWithTimeout ¶
func SendPkgWithTimeout(address string, data []byte, timeout time.Duration, option ...X结构_PkgOption) error
SendPkgWithTimeout 向 `address` 发送包含 `data` 的包裹,并设置超时限制,然后关闭连接。可选参数 `option` 用于指定发送包裹的选项。 md5:cf66e180792b75b0
func SendRecv ¶
SendRecv 会创建到 `address` 的连接,向该连接写入 `data`,接收响应, 然后关闭连接。
参数 `length` 指定等待接收的字节数量。如果 `length` 为 -1,则接收缓冲区的所有内容并返回。
可选参数 `retry` 指定了在写入数据失败时的重试策略。 md5:2f0794c80f81d806
func SendRecvPkg ¶
func SendRecvPkg(address string, data []byte, option ...X结构_PkgOption) ([]byte, error)
SendRecvPkg 向 `address` 发送一个包含 `data` 的数据包,接收响应并关闭连接。可选参数 `option` 用于指定发送数据包时的选项。 md5:0bc7256049faf99e
func SendRecvPkgWithTimeout ¶
func SendRecvPkgWithTimeout(address string, data []byte, timeout time.Duration, option ...X结构_PkgOption) ([]byte, error)
SendRecvPkgWithTimeout 向 `address` 发送包含 `data` 的包,同时设置超时限制来接收响应,并关闭连接。可选参数 `option` 指定发送包的选项。 md5:576d58e144643a35
Types ¶
type X结构_Conn ¶
type X结构_Conn struct { net.Conn // 基础TCP连接对象。 md5:b7b1c0f618f0d5c9 // contains filtered or unexported fields }
X结构_Conn是TCP连接对象。 md5:d539be0916b2b1b8
func NewConnByNetConn ¶
NewConnByNetConn 根据给定的net.Conn对象创建并返回一个TCP连接对象。 md5:88aad787fa32f138
func NewConnKeyCrt ¶
NewConnKeyCrt 创建并返回一个新的带有给定地址和TLS证书及密钥文件的TLS连接。 md5:b79c43de9a5f13ce
func NewConnTLS ¶
NewConnTLS 创建并返回一个新的TLS连接,使用给定的地址和TLS配置。 md5:a21dcb1cad67caa6
func (*X结构_Conn) Recv ¶
Recv 从连接中接收并返回数据。
注意, 1. 如果长度为0,表示它会从当前缓冲区接收数据并立即返回。 2. 如果长度小于0,表示它会接收连接中的所有数据,并返回直到没有更多的数据。如果决定接收缓冲区中的所有数据,开发者需要注意自行解析数据包。 3. 如果长度大于0,表示它会阻塞,直到接收到指定长度的数据。这是最常用的用于接收数据的长度值。 md5:75d42f229725a3f7
func (*X结构_Conn) RecvLine ¶
RecvLine 从连接中读取数据,直到读取到字符 '\n'。注意,返回的结果不包含最后一个字符 '\n'。 md5:e8f4d38a9d0e03e2
func (*X结构_Conn) RecvPkg ¶
func (c *X结构_Conn) RecvPkg(option ...X结构_PkgOption) (result []byte, err error)
RecvPkg 使用简单包协议从连接接收数据。 md5:cf1329c5df27539a
func (*X结构_Conn) RecvPkgWithTimeout ¶
func (c *X结构_Conn) RecvPkgWithTimeout(timeout time.Duration, option ...X结构_PkgOption) (data []byte, err error)
RecvPkgWithTimeout 使用简单包协议,从连接中读取数据,同时设置超时。 md5:5e1d4882f4476862
func (*X结构_Conn) RecvTill ¶
RecvTill 从连接中读取数据,直到读取到字节 `til` 为止。 注意,返回的结果中包含最后一个字节 `til`。 md5:3d5a6b2420bd7164
func (*X结构_Conn) RecvWithTimeout ¶
func (c *X结构_Conn) RecvWithTimeout(length int, timeout time.Duration, retry ...X结构_Retry) (data []byte, err error)
RecvWithTimeout 在连接上读取数据,带有超时设置。 md5:9c30fddfcddde9a2
func (*X结构_Conn) SendPkg ¶
func (c *X结构_Conn) SendPkg(data []byte, option ...X结构_PkgOption) error
SendPkg 使用简单包协议发送数据。
简单包协议:DataLength(24位)|DataField(variant)。
注意, 1. DataLength 是 DataField 的长度,不包含头大小。 2. 包的整数字节使用大端序编码。 md5:daa39f4e32227d79
func (*X结构_Conn) SendPkgWithTimeout ¶
func (c *X结构_Conn) SendPkgWithTimeout(data []byte, timeout time.Duration, option ...X结构_PkgOption) (err error)
使用简单包协议带超时时间地向连接发送数据。 md5:3f89f6011aed63bc
func (*X结构_Conn) SendRecvPkg ¶
func (c *X结构_Conn) SendRecvPkg(data []byte, option ...X结构_PkgOption) ([]byte, error)
SendRecvPkg 使用简单的包协议将数据写入连接,并阻塞读取响应。 md5:c157760431f11896
func (*X结构_Conn) SendRecvPkgWithTimeout ¶
func (c *X结构_Conn) SendRecvPkgWithTimeout(data []byte, timeout time.Duration, option ...X结构_PkgOption) ([]byte, error)
SendRecvPkgWithTimeout 使用简单包协议向连接写入数据,并在超时后读取响应。 md5:6da9109d534f7729
func (*X结构_Conn) SendRecvWithTimeout ¶
func (c *X结构_Conn) SendRecvWithTimeout(data []byte, length int, timeout time.Duration, retry ...X结构_Retry) ([]byte, error)
SendRecvWithTimeout 向连接写入数据并带有超时时间地读取响应。 md5:154815490fa55262
func (*X结构_Conn) SendWithTimeout ¶
func (c *X结构_Conn) SendWithTimeout(data []byte, timeout time.Duration, retry ...X结构_Retry) (err error)
SendWithTimeout 在超时时间内向连接写入数据。 md5:776c26aa00723dd4
func (*X结构_Conn) SetBufferWaitRecv ¶
SetBufferWaitRecv 设置从连接读取所有数据时的缓冲等待超时时间。 等待时间不能过长,否则可能会延迟从远程地址接收数据。 md5:54992dd21ce2360a
func (*X结构_Conn) SetDeadline ¶
SetDeadline 设置当前连接的截止时间。 md5:d3ab57d58a8a6b64
func (*X结构_Conn) SetDeadlineRecv ¶
SetDeadlineRecv为当前连接设置接收截止期限。 md5:5cf236fbc63fc1f7
type X结构_PkgOption ¶
type X结构_PkgOption struct { // HeaderSize 用于标记接下来接收数据的长度。 // 它默认为2字节,最大为4字节,代表数据的最大长度可以从65535字节到4294967295字节。 // md5:cc02a98c94fddd76 HeaderSize int // MaxDataSize 是数据字段的字节大小,用于数据长度验证。 // 如果未手动设置,它将根据HeaderSize自动相应设置。 // md5:a47982162ce5ef01 MaxDataSize int // 操作失败时的重试策略。 md5:cd672b1b96adbbdd Retry X结构_Retry }
X结构_PkgOption是简单协议的包选项。 md5:f49ee7556a39be3e
type X结构_PoolConn ¶
type X结构_PoolConn struct { *X结构_Conn // 底层连接对象。 md5:b967bfe4f6e1fc27 // contains filtered or unexported fields }
X结构_PoolConn 是一个具有连接池特性的TCP连接。 注意,它本身并不是一个连接池或连接管理器,而只是一个TCP连接对象。 md5:ba1f65d3a4240a38
func NewPoolConn ¶
func NewPoolConn(addr string, timeout ...time.Duration) (*X结构_PoolConn, error)
NewPoolConn 创建并返回一个具有连接池特性的连接。 md5:ee2281aa2be8c181
func (*X结构_PoolConn) Close ¶
func (c *X结构_PoolConn) Close() error
Close将活动的连接放回池中,如果连接未活动,则将其关闭。
请注意,如果`c`调用Close函数关闭自身,那么`c`将无法再次使用。 md5:8596872730e65b10
func (*X结构_PoolConn) Recv ¶
func (c *X结构_PoolConn) Recv(length int, retry ...X结构_Retry) ([]byte, error)
Recv 从连接中接收数据。 md5:d32a0574f5be517a
func (*X结构_PoolConn) RecvLine ¶
func (c *X结构_PoolConn) RecvLine(retry ...X结构_Retry) ([]byte, error)
RecvLine 从连接中读取数据,直到读取到字符 '\n'。注意,返回的结果不包含最后一个字符 '\n'。 md5:e8f4d38a9d0e03e2
func (*X结构_PoolConn) RecvPkg ¶
func (c *X结构_PoolConn) RecvPkg(option ...X结构_PkgOption) ([]byte, error)
RecvPkg 使用简单的包协议从连接接收包。 可选的`option`参数指定了接收包时的选项。 md5:6b708b1338c6bb8c
func (*X结构_PoolConn) RecvPkgWithTimeout ¶
func (c *X结构_PoolConn) RecvPkgWithTimeout(timeout time.Duration, option ...X结构_PkgOption) (data []byte, err error)
RecvPkgWithTimeout 使用简单包协议,从连接中读取数据,同时设置超时。 md5:5e1d4882f4476862
func (*X结构_PoolConn) RecvTill ¶
func (c *X结构_PoolConn) RecvTill(til []byte, retry ...X结构_Retry) ([]byte, error)
RecvTill 从连接中读取数据,直到读取到字节 `til` 为止。 注意,返回的结果中包含最后一个字节 `til`。 md5:3d5a6b2420bd7164
func (*X结构_PoolConn) RecvWithTimeout ¶
func (c *X结构_PoolConn) RecvWithTimeout(length int, timeout time.Duration, retry ...X结构_Retry) (data []byte, err error)
RecvWithTimeout 在连接上读取数据,带有超时设置。 md5:9c30fddfcddde9a2
func (*X结构_PoolConn) Send ¶
func (c *X结构_PoolConn) Send(data []byte, retry ...X结构_Retry) error
Send 将数据写入连接。如果写数据失败,它会从其池中获取一个新的连接。 md5:a5cfc10ec76d87e1
func (*X结构_PoolConn) SendPkg ¶
func (c *X结构_PoolConn) SendPkg(data []byte, option ...X结构_PkgOption) (err error)
SendPkg 向连接发送一个包含 `data` 的数据包。 可选参数 `option` 用于指定发送数据包时的选项。 md5:b992093685758441
func (*X结构_PoolConn) SendPkgWithTimeout ¶
func (c *X结构_PoolConn) SendPkgWithTimeout(data []byte, timeout time.Duration, option ...X结构_PkgOption) (err error)
使用简单包协议带超时时间地向连接发送数据。 md5:3f89f6011aed63bc
func (*X结构_PoolConn) SendRecvPkg ¶
func (c *X结构_PoolConn) SendRecvPkg(data []byte, option ...X结构_PkgOption) ([]byte, error)
SendRecvPkg 使用简单的包协议将数据写入连接,并阻塞读取响应。 md5:c157760431f11896
func (*X结构_PoolConn) SendRecvPkgWithTimeout ¶
func (c *X结构_PoolConn) SendRecvPkgWithTimeout(data []byte, timeout time.Duration, option ...X结构_PkgOption) ([]byte, error)
SendRecvPkgWithTimeout 使用简单包协议,带超时读取连接上的数据。 md5:41984892fec65364
func (*X结构_PoolConn) SendRecvWithTimeout ¶
func (c *X结构_PoolConn) SendRecvWithTimeout(data []byte, receive int, timeout time.Duration, retry ...X结构_Retry) ([]byte, error)
SendRecvWithTimeout 向连接写入数据并带有超时时间地读取响应。 md5:154815490fa55262
func (*X结构_PoolConn) SendWithTimeout ¶
func (c *X结构_PoolConn) SendWithTimeout(data []byte, timeout time.Duration, retry ...X结构_Retry) (err error)
SendWithTimeout 在超时时间内向连接写入数据。 md5:776c26aa00723dd4
type X结构_Server ¶
type X结构_Server struct {
// contains filtered or unexported fields
}
X结构_Server 是一个 TCP 服务器。 md5:15abc757287261ea
func GetServer ¶
func GetServer(name ...interface{}) *X结构_Server
GetServer 返回指定名称的 TCP 服务器,如果不存在,则返回一个新创建的默认名为 `name` 的 TCP 服务器。参数 `name` 用于指定 TCP 服务器的名称。 md5:f6bb57410cf2ca98
func NewServer ¶
func NewServer(address string, handler func(*X结构_Conn), name ...string) *X结构_Server
NewServer 创建并返回一个新的普通TCP服务器。 参数 `name` 是可选的,用于指定服务器的实例名称。 md5:ce4abdc7a25f75da
func NewServerKeyCrt ¶
func NewServerKeyCrt(address, crtFile, keyFile string, handler func(*X结构_Conn), name ...string) (*X结构_Server, error)
NewServerKeyCrt 创建并返回一个支持TLS的TCP服务器。 参数 `name` 是可选的,用于指定服务器的实例名称。 md5:65a6856829628fe8
func NewServerTLS ¶
func NewServerTLS(address string, tlsConfig *tls.Config, handler func(*X结构_Conn), name ...string) *X结构_Server
NewServerTLS 创建并返回一个支持TLS的TCP服务器。 参数`name`是可选的,用于指定服务器的实例名称。 md5:102d98ca307029b3
func (*X结构_Server) Close ¶
func (s *X结构_Server) Close() error
Close 方法关闭监听器并停止服务器。 md5:494fcac465675910
func (*X结构_Server) GetAddress ¶
func (s *X结构_Server) GetAddress() string
GetAddress 获取服务器的监听地址。 md5:6085c2f0086d87f9
func (*X结构_Server) GetListenedAddress ¶
func (s *X结构_Server) GetListenedAddress() string
GetListenedAddress 获取并返回当前服务器所监听的地址字符串。 md5:51d352ffec9dc329
func (*X结构_Server) GetListenedPort ¶
func (s *X结构_Server) GetListenedPort() int
GetListenedPort 获取并返回当前服务器监听的其中一个端口。 md5:98e33a51d8d8309c
func (*X结构_Server) Run ¶
func (s *X结构_Server) Run() (err error)
Run 开始运行TCP服务器。 md5:b107bdcd45f1ccdc
func (*X结构_Server) SetAddress ¶
func (s *X结构_Server) SetAddress(address string)
SetAddress 设置服务器的监听地址。 md5:35306d25b7cbc244
func (*X结构_Server) SetHandler ¶
func (s *X结构_Server) SetHandler(handler func(*X结构_Conn))
SetHandler 设置服务器的连接处理器。 md5:10bacdc88ff59cee
func (*X结构_Server) SetTLSConfig ¶
func (s *X结构_Server) SetTLSConfig(tlsConfig *tls.Config)
SetTLSConfig 设置服务器的TLS配置。 md5:02f67dcfad23906c
func (*X结构_Server) SetTLSKeyCrt ¶
func (s *X结构_Server) SetTLSKeyCrt(crtFile, keyFile string) error
SetTLSKeyCrt 设置服务器TLS配置的证书和密钥文件。 md5:dd19415f9056b27d