mux

package module
v0.0.0-...-c90f2c2 Latest Latest
Warning

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

Go to latest
Published: Feb 8, 2022 License: GPL-3.0 Imports: 8 Imported by: 1

README

mux

a simple multiplexer

Usage

从 net.Conn 上创建新的Mux

conn, err := net.Dial("tcp4", "...")
if err != nil {
    log.Fatal(err)
}

mx, err := mux.NewMux(conn)
if err != nil {
    log.Fatal(err)
}

在mux上调用Dial新建连接

var conn net.Conn
var err error 
conn, err = mx.Dial()
if err != nil {
    log.Fatal(err)
}
defer conn.Close()
io.WriteString(conn, "hello world!")

在mux上调用Accept获取连接

conn, err := mx.Accept()
if err != nil {
    log.Fatal(err)
}
defer conn.Close()
buf := make([]byte, 512)
n, err := conn.Read(buf)
if err != nil {
    log.Fatal(err)
}
log.Println(string(buf[:n]))

Accept/Dial函数在多路复用流两边都可以调用
返回的conn符合net.Conn接口,但是请不要对其进行并发读或并发写,应该保证同一时刻只有一个goroutine会进行读/写

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Addr

type Addr struct {
	net.Addr
	// contains filtered or unexported fields
}

func (*Addr) String

func (addr *Addr) String() string

type Mux

type Mux struct {
	net.Conn // underlying connection, must be reliable
	// contains filtered or unexported fields
}

func NewMux

func NewMux(conn net.Conn) (mux *Mux, err error)

func (*Mux) Accept

func (mux *Mux) Accept() (conn net.Conn, err error)

func (*Mux) AcceptMux

func (mux *Mux) AcceptMux() (conn *MuxConn, err error)

func (*Mux) Addr

func (mux *Mux) Addr() net.Addr

func (*Mux) Close

func (mux *Mux) Close() (err error)

func (*Mux) Dial

func (mux *Mux) Dial() (conn *MuxConn, err error)

func (*Mux) IsClosed

func (mux *Mux) IsClosed() bool

func (*Mux) NumOfConns

func (mux *Mux) NumOfConns() int

type MuxConn

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

func NewMuxConn

func NewMuxConn(mux *Mux, id uint16, ver uint8) *MuxConn

func (*MuxConn) Close

func (conn *MuxConn) Close() (err error)

func (*MuxConn) LocalAddr

func (conn *MuxConn) LocalAddr() (addr net.Addr)

func (*MuxConn) NotifyRead

func (conn *MuxConn) NotifyRead()

func (*MuxConn) Pause

func (conn *MuxConn) Pause()

func (*MuxConn) Read

func (conn *MuxConn) Read(b []byte) (n int, err error)

func (*MuxConn) RemoteAddr

func (conn *MuxConn) RemoteAddr() (addr net.Addr)

func (*MuxConn) Reply

func (conn *MuxConn) Reply()

func (*MuxConn) SetDeadline

func (conn *MuxConn) SetDeadline(t time.Time) (err error)

func (*MuxConn) SetReadDeadline

func (conn *MuxConn) SetReadDeadline(t time.Time) (err error)

func (*MuxConn) SetWriteDeadline

func (conn *MuxConn) SetWriteDeadline(t time.Time) (err error)

func (*MuxConn) Write

func (conn *MuxConn) Write(b []byte) (n int, err error)

func (*MuxConn) WriteBuffers

func (conn *MuxConn) WriteBuffers(bufs [][]byte) (n int, err error)

Jump to

Keyboard shortcuts

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