gudp

package
v1.18.3 Latest Latest
Warning

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

Go to latest
Published: Mar 9, 2024 License: MIT Imports: 10 Imported by: 0

Documentation

Overview

Package gudp provides UDP server and client implementations.

Index

Examples

Constants

View Source
const (
	// FreePortAddress marks the server listens using random free port.
	FreePortAddress = ":0"
)

Variables

This section is empty.

Functions

func GetFreePort

func GetFreePort() (port int, err error)

GetFreePort retrieves and returns a port that is free.

Example
package main

import (
	"fmt"

	"github.com/joy12825/gf/net/gudp"
)

func main() {
	fmt.Println(gudp.GetFreePort())

	// May Output:
	// 57429 <nil>
}
Output:

func GetFreePorts

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

GetFreePorts retrieves and returns specified number of ports that are free.

Example
package main

import (
	"fmt"

	"github.com/joy12825/gf/net/gudp"
)

func main() {
	fmt.Println(gudp.GetFreePorts(2))

	// May Output:
	// [57743 57744] <nil>
}
Output:

func MustGetFreePort

func MustGetFreePort() (port int)

MustGetFreePort performs as GetFreePort, but it panics if any error occurs.

func NewNetConn

func NewNetConn(remoteAddress string, localAddress ...string) (*net.UDPConn, error)

NewNetConn creates and returns a *net.UDPConn with given addresses.

func Send

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

Send writes data to `address` using UDP connection and then closes the connection. Note that it is used for short connection usage.

func SendRecv

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

SendRecv writes data to `address` using UDP connection, reads response and then closes the connection. Note that it is used for short connection usage.

Types

type Conn

type Conn struct {
	*net.UDPConn // Underlying UDP connection.
	// contains filtered or unexported fields
}

Conn handles the UDP connection.

func NewConn

func NewConn(remoteAddress string, localAddress ...string) (*Conn, error)

NewConn creates UDP connection to `remoteAddress`. The optional parameter `localAddress` specifies the local address for connection.

func NewConnByNetConn

func NewConnByNetConn(udp *net.UDPConn) *Conn

NewConnByNetConn creates an UDP connection object with given *net.UDPConn object.

func (*Conn) Recv

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

Recv receives and returns data from remote address. The parameter `buffer` is used for customizing the receiving buffer size. If `buffer` <= 0, it uses the default buffer size, which is 1024 byte.

There's package border in UDP protocol, we can receive a complete package if specified buffer size is big enough. VERY NOTE that we should receive the complete package in once or else the leftover package data would be dropped.

func (*Conn) RecvWithTimeout

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

RecvWithTimeout reads data from remote address with timeout.

func (*Conn) RemoteAddr

func (c *Conn) RemoteAddr() net.Addr

RemoteAddr returns the remote address of current UDP connection. Note that it cannot use c.conn.RemoteAddr() as it is nil.

func (*Conn) Send

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

Send writes data to remote address.

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

func (c *Conn) SetBufferWaitRecv(d time.Duration)

SetBufferWaitRecv 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) SetDeadline

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

SetDeadline sets the read and write deadlines associated with the connection.

func (*Conn) SetDeadlineRecv

func (c *Conn) SetDeadlineRecv(t time.Time) (err error)

SetDeadlineRecv sets the read deadline associated with the connection.

func (*Conn) SetDeadlineSend

func (c *Conn) SetDeadlineSend(t time.Time) (err error)

SetDeadlineSend sets the deadline of sending for current connection.

type Retry

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

type Server

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

Server is the UDP server.

func GetServer

func GetServer(name ...interface{}) *Server

GetServer creates and returns an UDP server instance with given name.

func NewServer

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

NewServer creates and returns an UDP server. The optional parameter `name` is used to specify its name, which can be used for GetServer function to retrieve its instance.

func (*Server) Close

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

Close closes the connection. It will make server shutdowns immediately.

func (*Server) GetListenedAddress

func (s *Server) GetListenedAddress() string

GetListenedAddress retrieves and returns the address string which are listened by current server.

func (*Server) GetListenedPort

func (s *Server) GetListenedPort() int

GetListenedPort retrieves and returns one port which is listened to by current server.

func (*Server) Run

func (s *Server) Run() error

Run starts listening UDP connection.

func (*Server) SetAddress

func (s *Server) SetAddress(address string)

SetAddress sets the server address for UDP server.

func (*Server) SetHandler

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

SetHandler sets the connection handler for UDP server.

Jump to

Keyboard shortcuts

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