tcp类

package
v0.0.0-...-782a3f7 Latest Latest
Warning

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

Go to latest
Published: Nov 21, 2024 License: MIT Imports: 17 Imported by: 0

Documentation

Overview

包`gtcp`提供了TCP服务器和客户端实现。 md5:8981c5b21f0ab245

Index

Examples

Constants

View Source
const (
	// X常量_FreePortAddress 标记服务器使用随机的空闲端口进行监听。 md5:16e8ca0633c4a135
	X常量_FreePortAddress = ":0"
)

Variables

This section is empty.

Functions

func GetFreePort

func GetFreePort() (port int, err error)

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

func GetFreePorts(count int) (ports []int, err error)

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

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

LoadKeyCrt 根据给定的证书和密钥文件创建并返回一个 TLS 配置对象。 md5:e31385756c06b0a4

func MustGetFreePort

func MustGetFreePort() int

MustGetFreePort 的行为与 GetFreePort 相同,但如果发生任何错误,它会直接 panic。 md5:a1ae43bc1faffe59

func NewNetConn

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

NewNetConn 创建并返回一个具有给定地址(如 "127.0.0.1:80")的net.Conn。 可选参数 `timeout` 指定了建立连接的超时时间。 md5:2e0124ac2d5ba04b

func NewNetConnKeyCrt

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

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

func Send(address string, data []byte, retry ...X结构_Retry) error

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

func SendRecv(address string, data []byte, length int, retry ...X结构_Retry) ([]byte, error)

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

func SendRecvWithTimeout

func SendRecvWithTimeout(address string, data []byte, receive int, timeout time.Duration, retry ...X结构_Retry) ([]byte, error)

SendRecvWithTimeout 在限制读取超时的情况下执行SendRecv逻辑。 md5:a0b595ec27ab2abf

func SendWithTimeout

func SendWithTimeout(address string, data []byte, timeout time.Duration, retry ...X结构_Retry) error

SendWithTimeout 在发送逻辑中添加了写入超时的限制。 md5:3ede704cb632bc5e

Types

type X结构_Conn

type X结构_Conn struct {
	net.Conn // 基础TCP连接对象。 md5:b7b1c0f618f0d5c9
	// contains filtered or unexported fields
}

X结构_Conn是TCP连接对象。 md5:d539be0916b2b1b8

func NewConn

func NewConn(addr string, timeout ...time.Duration) (*X结构_Conn, error)

NewConn 创建并返回一个与给定地址的新连接。 md5:b8d7c0b5ae5f53f0

func NewConnByNetConn

func NewConnByNetConn(conn net.Conn) *X结构_Conn

NewConnByNetConn 根据给定的net.Conn对象创建并返回一个TCP连接对象。 md5:88aad787fa32f138

func NewConnKeyCrt

func NewConnKeyCrt(addr, crtFile, keyFile string) (*X结构_Conn, error)

NewConnKeyCrt 创建并返回一个新的带有给定地址和TLS证书及密钥文件的TLS连接。 md5:b79c43de9a5f13ce

func NewConnTLS

func NewConnTLS(addr string, tlsConfig *tls.Config) (*X结构_Conn, error)

NewConnTLS 创建并返回一个新的TLS连接,使用给定的地址和TLS配置。 md5:a21dcb1cad67caa6

func (*X结构_Conn) Recv

func (c *X结构_Conn) Recv(length int, retry ...X结构_Retry) ([]byte, error)

Recv 从连接中接收并返回数据。

注意, 1. 如果长度为0,表示它会从当前缓冲区接收数据并立即返回。 2. 如果长度小于0,表示它会接收连接中的所有数据,并返回直到没有更多的数据。如果决定接收缓冲区中的所有数据,开发者需要注意自行解析数据包。 3. 如果长度大于0,表示它会阻塞,直到接收到指定长度的数据。这是最常用的用于接收数据的长度值。 md5:75d42f229725a3f7

func (*X结构_Conn) RecvLine

func (c *X结构_Conn) RecvLine(retry ...X结构_Retry) ([]byte, error)

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

func (c *X结构_Conn) RecvTill(til []byte, retry ...X结构_Retry) ([]byte, error)

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

func (c *X结构_Conn) Send(data []byte, retry ...X结构_Retry) error

Send 将数据写入远程地址。 md5:445009019bd4a1a8

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

func (c *X结构_Conn) SendRecv(data []byte, length int, retry ...X结构_Retry) ([]byte, error)

SendRecv 向连接写入数据,并阻塞读取响应。 md5:a92dbf9e10bfe35b

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

func (c *X结构_Conn) SetBufferWaitRecv(bufferWaitDuration time.Duration)

SetBufferWaitRecv 设置从连接读取所有数据时的缓冲等待超时时间。 等待时间不能过长,否则可能会延迟从远程地址接收数据。 md5:54992dd21ce2360a

func (*X结构_Conn) SetDeadline

func (c *X结构_Conn) SetDeadline(t time.Time) (err error)

SetDeadline 设置当前连接的截止时间。 md5:d3ab57d58a8a6b64

func (*X结构_Conn) SetDeadlineRecv

func (c *X结构_Conn) SetDeadlineRecv(t time.Time) (err error)

SetDeadlineRecv为当前连接设置接收截止期限。 md5:5cf236fbc63fc1f7

func (*X结构_Conn) SetDeadlineSend

func (c *X结构_Conn) SetDeadlineSend(t time.Time) (err error)

SetDeadlineSend 设置当前连接的发送截止期限。 md5:9f0d98d0e6beda95

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

func (c *X结构_PoolConn) SendRecv(data []byte, receive int, retry ...X结构_Retry) ([]byte, error)

SendRecv 向连接写入数据,并阻塞读取响应。 md5:a92dbf9e10bfe35b

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结构_Retry

type X结构_Retry struct {
	Count    int           // Retry count.
	Interval time.Duration // Retry interval.
}

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

Jump to

Keyboard shortcuts

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