62 lines
1.3 KiB
Go
62 lines
1.3 KiB
Go
package goSam
|
|
|
|
import (
|
|
"net"
|
|
"time"
|
|
)
|
|
|
|
// DatagramConn
|
|
type DatagramConn struct {
|
|
RWC
|
|
conn net.PacketConn
|
|
RAddr net.Addr
|
|
}
|
|
|
|
// WrapConn wraps a net.PacketConn in a DatagramConn.
|
|
func WrapPacketConn(c net.Conn) *Conn {
|
|
wrap := Conn{
|
|
conn: c,
|
|
}
|
|
wrap.Reader = NewReadLogger("<", c)
|
|
wrap.Writer = NewWriteLogger(">", c)
|
|
wrap.RWC.c = c
|
|
return &wrap
|
|
}
|
|
|
|
func (d *DatagramConn) ReadFrom(p []byte) (n int, addr net.Addr, err error) {
|
|
return d.conn.ReadFrom(p)
|
|
}
|
|
func (d *DatagramConn) Read(b []byte) (n int, err error) {
|
|
n, _, err = d.ReadFrom(b)
|
|
return n, err
|
|
}
|
|
func (d *DatagramConn) WriteTo(p []byte, addr net.Addr) (n int, err error) {
|
|
return d.conn.WriteTo(p, addr)
|
|
}
|
|
func (d *DatagramConn) Write(b []byte) (n int, err error) {
|
|
n, err = d.WriteTo(b, d.RemoteAddr())
|
|
return n, err
|
|
}
|
|
func (d *DatagramConn) Close() error {
|
|
return d.conn.Close()
|
|
}
|
|
func (d *DatagramConn) LocalAddr() net.Addr {
|
|
return d.conn.LocalAddr()
|
|
}
|
|
func (d *DatagramConn) RemoteAddr() net.Addr {
|
|
return d.RAddr
|
|
}
|
|
func (d *DatagramConn) SetDeadline(t time.Time) error {
|
|
return d.conn.SetDeadline(t)
|
|
}
|
|
func (d *DatagramConn) SetReadDeadline(t time.Time) error {
|
|
return d.conn.SetReadDeadline(t)
|
|
}
|
|
func (d *DatagramConn) SetWriteDeadline(t time.Time) error {
|
|
return d.conn.SetWriteDeadline(t)
|
|
}
|
|
|
|
var dgt net.PacketConn = &DatagramConn{}
|
|
|
|
//func (c *Client) DatagramSend()
|