2020-12-03 15:27:52 +08:00
|
|
|
package vmess
|
|
|
|
|
|
|
|
import (
|
|
|
|
"net"
|
|
|
|
)
|
|
|
|
|
|
|
|
// PktConn is a udp Packet.Conn.
|
2022-03-11 19:08:07 +08:00
|
|
|
type PktConn struct {
|
|
|
|
net.Conn
|
|
|
|
target *net.UDPAddr
|
|
|
|
}
|
2020-12-03 15:27:52 +08:00
|
|
|
|
|
|
|
// NewPktConn returns a PktConn.
|
2022-03-11 19:08:07 +08:00
|
|
|
func NewPktConn(c net.Conn, target *net.UDPAddr) *PktConn {
|
|
|
|
return &PktConn{Conn: c, target: target}
|
|
|
|
}
|
2020-12-03 15:27:52 +08:00
|
|
|
|
|
|
|
// ReadFrom implements the necessary function of net.PacketConn.
|
|
|
|
func (pc *PktConn) ReadFrom(b []byte) (int, net.Addr, error) {
|
|
|
|
n, err := pc.Read(b)
|
2022-03-11 19:08:07 +08:00
|
|
|
return n, pc.target, err
|
2020-12-03 15:27:52 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
// WriteTo implements the necessary function of net.PacketConn.
|
|
|
|
func (pc *PktConn) WriteTo(b []byte, addr net.Addr) (int, error) {
|
|
|
|
return pc.Write(b)
|
|
|
|
}
|