mudp

package
v0.3.1 Latest Latest
Warning

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

Go to latest
Published: Oct 12, 2025 License: MIT Imports: 6 Imported by: 0

README

mudp 使用说明

这是 mudp 包的简单使用示例。示例包含如何创建 UDP Receiver(监听)和 Sender(发送),以及常见的超时、关闭和并发注意事项。

使用示例


# Receiver 监听在本地 9000 端口,打印收到的消息内容和发送者地址
go run mudp/udp_receiver_demo/main.go

# 在另一个终端运行 Sender 发送消息
go run mudp/udp_sender_demo/main.go

注意事项

  • Receiver 的 Listen 会为每个收到的数据包启动一个 goroutine 来执行 handler,若 handler 有较重的工作,建议在 handler 内使用有界的 worker 池以避免无限制并发。
  • Sender 的 Send 支持 context 取消与 timeout(最后以最先到期的 deadline 为准)。发送时会将连接的写超时设置为合并后的 deadline,从而避免长期阻塞。
  • 在高并发场景下,频繁创建大量 goroutine 进行 Write 可能导致资源压力,可考虑重用发送器并使用限流方案。

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Handler

type Handler func(data []byte, addr *net.UDPAddr)

Handler 在每个收到的数据报上被调用,addr 为发送者地址。

type Receiver

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

Receiver 在绑定的地址上接收 UDP 数据报并将其分发到 handler。 支持通过 ctx 取消,ctx 取消或发生错误时返回。

func NewReceiver

func NewReceiver(localAddr string) (r *Receiver, err error)

NewReceiver 将 UDP 监听器绑定到 localAddr(例如 ":9000" 或 "127.0.0.1:9000")。

func (*Receiver) Close

func (r *Receiver) Close() error

Close 关闭接收者的连接。

func (*Receiver) Listen

func (r *Receiver) Listen(ctx context.Context, handler Handler, bufferSize int) error

Listen 开始接收消息并为每个数据包调用 handler。 bufferSize 控制读取的最大数据包大小(如果 <=0 则默认为 4096)。

type Sender

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

Sender 表示一个 UDP 发送者

func NewSender

func NewSender(localAddr string) (s *Sender, err error)

NewSender 创建一个 UDP 发送者,可选绑定本地地址("ip:port" 或 ":0")。 如果 localAddr 为空,操作系统会选择本地地址。

func (*Sender) Close

func (s *Sender) Close() error

Close 关闭发送者的连接。

func (*Sender) Send

func (s *Sender) Send(ctx context.Context, remoteAddr string, data []byte, timeout time.Duration) (n int, err error)

Send 将数据发送到 remoteAddr("ip:port")。支持通过 ctx 取消和可选的超时参数。

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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