mirror of
https://github.com/gospider007/requests.git
synced 2025-12-24 13:57:52 +08:00
sync
This commit is contained in:
9
dial.go
9
dial.go
@@ -260,19 +260,23 @@ func (obj *Dialer) addrToIp(host string, ips []net.IPAddr, addrType gtls.AddrTyp
|
||||
func (obj *Dialer) verifySocks5(conn net.Conn, network string, proxyAddr Address, remoteAddr Address) (proxyAddress Address, err error) {
|
||||
err = obj.verifySocks5Auth(conn, proxyAddr)
|
||||
if err != nil {
|
||||
err = tools.WrapError(err, "verifySocks5Auth error")
|
||||
return
|
||||
}
|
||||
err = obj.writeCmd(conn, network)
|
||||
if err != nil {
|
||||
err = tools.WrapError(err, "write cmd error")
|
||||
return
|
||||
}
|
||||
remoteAddr.NetWork = network
|
||||
err = WriteUdpAddr(conn, remoteAddr)
|
||||
if err != nil {
|
||||
err = tools.WrapError(err, "write addr error")
|
||||
return
|
||||
}
|
||||
readCon := make([]byte, 3)
|
||||
if _, err = io.ReadFull(conn, readCon); err != nil {
|
||||
err = tools.WrapError(err, "read socks5 proxy error")
|
||||
return
|
||||
}
|
||||
if readCon[0] != 5 {
|
||||
@@ -301,10 +305,7 @@ func (obj *Dialer) verifyUDPSocks5(ctx context.Context, conn net.Conn, proxyAddr
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
wrapConn, err = NewUDPConn(wrapConn, &net.UDPAddr{IP: proxyAddress.IP, Port: proxyAddress.Port})
|
||||
if err != nil {
|
||||
return wrapConn, err
|
||||
}
|
||||
wrapConn = NewUDPConn(wrapConn, &net.UDPAddr{IP: proxyAddress.IP, Port: proxyAddress.Port})
|
||||
go func() {
|
||||
var buf [1]byte
|
||||
for {
|
||||
|
||||
16
go.mod
16
go.mod
@@ -7,14 +7,14 @@ require (
|
||||
github.com/gospider007/bs4 v0.0.0-20250217075024-ab8aec9c90d0
|
||||
github.com/gospider007/gson v0.0.0-20250217075140-0a65c21185c4
|
||||
github.com/gospider007/gtls v0.0.0-20250217075148-cad34209c0ae
|
||||
github.com/gospider007/http2 v0.0.0-20250217100059-0dfc2d383448
|
||||
github.com/gospider007/http3 v0.0.0-20250217075201-924e6c783810
|
||||
github.com/gospider007/ja3 v0.0.0-20250217075217-36e4ffd863e8
|
||||
github.com/gospider007/http2 v0.0.0-20250221082005-fc36127debbf
|
||||
github.com/gospider007/http3 v0.0.0-20250221083521-5f33d134966b
|
||||
github.com/gospider007/ja3 v0.0.0-20250221083537-3f22331328e6
|
||||
github.com/gospider007/proxy v0.0.0-20250217075345-8b7075005569
|
||||
github.com/gospider007/re v0.0.0-20250217075352-bcb79f285d6c
|
||||
github.com/gospider007/tools v0.0.0-20250217075502-a830b402190c
|
||||
github.com/gospider007/tools v0.0.0-20250220003248-3c9bfbf2e179
|
||||
github.com/gospider007/websocket v0.0.0-20250217075551-6bd98eaabb07
|
||||
github.com/quic-go/quic-go v0.49.0
|
||||
github.com/quic-go/quic-go v0.50.0
|
||||
github.com/refraction-networking/uquic v0.0.6
|
||||
github.com/refraction-networking/utls v1.6.7
|
||||
golang.org/x/net v0.35.0
|
||||
@@ -39,12 +39,12 @@ require (
|
||||
github.com/google/pprof v0.0.0-20250208200701-d0013a598941 // indirect
|
||||
github.com/gospider007/blog v0.0.0-20250217075004-fbd89cbd4147 // indirect
|
||||
github.com/gospider007/kinds v0.0.0-20250217075226-10f199f7215d // indirect
|
||||
github.com/gospider007/net v0.0.0-20250217075332-457b643a0d40 // indirect
|
||||
github.com/gospider007/net v0.0.0-20250221083549-0e877edfdc95 // indirect
|
||||
github.com/hashicorp/errwrap v1.1.0 // indirect
|
||||
github.com/hashicorp/go-multierror v1.1.1 // indirect
|
||||
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
|
||||
github.com/json-iterator/go v1.1.12 // indirect
|
||||
github.com/klauspost/compress v1.17.11 // indirect
|
||||
github.com/klauspost/compress v1.18.0 // indirect
|
||||
github.com/klauspost/cpuid/v2 v2.2.9 // indirect
|
||||
github.com/klauspost/pgzip v1.2.6 // indirect
|
||||
github.com/libdns/libdns v0.2.3 // indirect
|
||||
@@ -72,7 +72,7 @@ require (
|
||||
go.uber.org/zap/exp v0.3.0 // indirect
|
||||
go4.org v0.0.0-20230225012048-214862532bf5 // indirect
|
||||
golang.org/x/crypto v0.33.0 // indirect
|
||||
golang.org/x/exp v0.0.0-20250215185904-eff6e970281f // indirect
|
||||
golang.org/x/exp v0.0.0-20250218142911-aa4b98e5adaa // indirect
|
||||
golang.org/x/image v0.24.0 // indirect
|
||||
golang.org/x/mod v0.23.0 // indirect
|
||||
golang.org/x/sync v0.11.0 // indirect
|
||||
|
||||
32
go.sum
32
go.sum
@@ -106,22 +106,22 @@ github.com/gospider007/gson v0.0.0-20250217075140-0a65c21185c4 h1:uc5CTJHHYBghQ5
|
||||
github.com/gospider007/gson v0.0.0-20250217075140-0a65c21185c4/go.mod h1:NyX+cIZzkej8h8czc+Z0nlJz07XnZ34OvtqR6evPSVg=
|
||||
github.com/gospider007/gtls v0.0.0-20250217075148-cad34209c0ae h1:w0FETfH2q/N1B8llpFC0+XZkxjNc99LoDSy1XW5NfT8=
|
||||
github.com/gospider007/gtls v0.0.0-20250217075148-cad34209c0ae/go.mod h1:VoExB3KZrF8CwtvNfLWtLG5OcDWElgQ3dsjs/C+6f04=
|
||||
github.com/gospider007/http2 v0.0.0-20250217100059-0dfc2d383448 h1:JzK6lJQdTwVLHF3ySdA+3M01wX2Ea99dxYu/ZEqI5tI=
|
||||
github.com/gospider007/http2 v0.0.0-20250217100059-0dfc2d383448/go.mod h1:bhJXuoZByYkUwEaJiE9M3qypf3L491h69FciC46jpVE=
|
||||
github.com/gospider007/http3 v0.0.0-20250217075201-924e6c783810 h1:bCzm4P3VwCJZy9KGS/r95rS/cG+6yDfDf+1wlQVVBAE=
|
||||
github.com/gospider007/http3 v0.0.0-20250217075201-924e6c783810/go.mod h1:ReAYBHJHP7nW+4puITwr3CGXqePEweJnLApiBRP/dOw=
|
||||
github.com/gospider007/ja3 v0.0.0-20250217075217-36e4ffd863e8 h1:9xYzyy+AiPa1EXTBkA43zLboWyhyg2ONwCV8rXt0YVk=
|
||||
github.com/gospider007/ja3 v0.0.0-20250217075217-36e4ffd863e8/go.mod h1:T+kVW660hw4Z8mgXvDX/MQcZcA3sO3QzmnbagpeToe8=
|
||||
github.com/gospider007/http2 v0.0.0-20250221082005-fc36127debbf h1:qBmuGrNS8qrXgHaTSUJmTz+6xiCeeotOABx26dKXD2Y=
|
||||
github.com/gospider007/http2 v0.0.0-20250221082005-fc36127debbf/go.mod h1:bhJXuoZByYkUwEaJiE9M3qypf3L491h69FciC46jpVE=
|
||||
github.com/gospider007/http3 v0.0.0-20250221083521-5f33d134966b h1:cWs+rS9m/JHoe2V4rCU6J5qEsnid6txU7J5FWQxCYtQ=
|
||||
github.com/gospider007/http3 v0.0.0-20250221083521-5f33d134966b/go.mod h1:ReAYBHJHP7nW+4puITwr3CGXqePEweJnLApiBRP/dOw=
|
||||
github.com/gospider007/ja3 v0.0.0-20250221083537-3f22331328e6 h1:N3Qcn/iu324vCCuPCFanI9xzSBU7NUZHzS4u9wkVUPM=
|
||||
github.com/gospider007/ja3 v0.0.0-20250221083537-3f22331328e6/go.mod h1:T+kVW660hw4Z8mgXvDX/MQcZcA3sO3QzmnbagpeToe8=
|
||||
github.com/gospider007/kinds v0.0.0-20250217075226-10f199f7215d h1:+Fih572EdNmYCK1L82MyWOj9tAwIgZ2JqepmasAclg8=
|
||||
github.com/gospider007/kinds v0.0.0-20250217075226-10f199f7215d/go.mod h1:3u6J+nbdWhCNJGiQjq/hKSukn2k6ebjd98rd2+fzKNo=
|
||||
github.com/gospider007/net v0.0.0-20250217075332-457b643a0d40 h1:1SudOZ1jIxUhaiBO46ipKcvBbE/iOZavD9vbJvZigF0=
|
||||
github.com/gospider007/net v0.0.0-20250217075332-457b643a0d40/go.mod h1:8qe9ZLkK6B6IjYS/APva7Yma4FamcqSEaQJzbyPG1qo=
|
||||
github.com/gospider007/net v0.0.0-20250221083549-0e877edfdc95 h1:38pyAcVWaxzhztQXU/SsKEVeVBFDIZe2vZdPeuPlnCk=
|
||||
github.com/gospider007/net v0.0.0-20250221083549-0e877edfdc95/go.mod h1:8qe9ZLkK6B6IjYS/APva7Yma4FamcqSEaQJzbyPG1qo=
|
||||
github.com/gospider007/proxy v0.0.0-20250217075345-8b7075005569 h1:7ns6tr10g2Vq41YM7JbAbgPNKFZEnPQJF53bngKsN9E=
|
||||
github.com/gospider007/proxy v0.0.0-20250217075345-8b7075005569/go.mod h1:PdU/vA6CFY8L6mKe/J7DGD1zlvi4JbSq/6fjYZXe1p8=
|
||||
github.com/gospider007/re v0.0.0-20250217075352-bcb79f285d6c h1:8/Cf+c2680tkWJ+ueZ9RLLK5R5R8nhE8pNBUPHjkvkM=
|
||||
github.com/gospider007/re v0.0.0-20250217075352-bcb79f285d6c/go.mod h1:dd8aDIUG1vDPP5r+vHBtiUK0Zn6uk3SsWt1ZvmCCHLs=
|
||||
github.com/gospider007/tools v0.0.0-20250217075502-a830b402190c h1:AEImUmU0EycMUfm/TN8fpNgoj5SDfUZJcnCTbibctWs=
|
||||
github.com/gospider007/tools v0.0.0-20250217075502-a830b402190c/go.mod h1:zZEbtq805GRSHr0oa2hI4vRonTmVznAeYqWfvJG/DmQ=
|
||||
github.com/gospider007/tools v0.0.0-20250220003248-3c9bfbf2e179 h1:vIYwrsLBvtzvaeTC0kKksrsNGpjAiprhHtcWzfPipjk=
|
||||
github.com/gospider007/tools v0.0.0-20250220003248-3c9bfbf2e179/go.mod h1:zZEbtq805GRSHr0oa2hI4vRonTmVznAeYqWfvJG/DmQ=
|
||||
github.com/gospider007/websocket v0.0.0-20250217075551-6bd98eaabb07 h1:V7QmQw1pxIvz6K6xlYTO76G6qGGfXz4rkkJvJ+px07Q=
|
||||
github.com/gospider007/websocket v0.0.0-20250217075551-6bd98eaabb07/go.mod h1:H8zn1OGchu202uZXCbm240bdi33b/QNyylDwnjEMQFI=
|
||||
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
|
||||
@@ -140,8 +140,8 @@ github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1
|
||||
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
|
||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||
github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
|
||||
github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc=
|
||||
github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0=
|
||||
github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo=
|
||||
github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
|
||||
github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
|
||||
github.com/klauspost/cpuid/v2 v2.2.9 h1:66ze0taIn2H33fBvCkXuv9BmCwDfafmiIVpKV9kKGuY=
|
||||
github.com/klauspost/cpuid/v2 v2.2.9/go.mod h1:rqkxqrZ1EhYM9G+hXH7YdowN5R5RGN6NK4QwQ3WMXF8=
|
||||
@@ -177,8 +177,8 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH
|
||||
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||
github.com/quic-go/qpack v0.5.1 h1:giqksBPnT/HDtZ6VhtFKgoLOWmlyo9Ei6u9PqzIMbhI=
|
||||
github.com/quic-go/qpack v0.5.1/go.mod h1:+PC4XFrEskIVkcLzpEkbLqq1uCoxPhQuvK5rH1ZgaEg=
|
||||
github.com/quic-go/quic-go v0.49.0 h1:w5iJHXwHxs1QxyBv1EHKuC50GX5to8mJAxvtnttJp94=
|
||||
github.com/quic-go/quic-go v0.49.0/go.mod h1:s2wDnmCdooUQBmQfpUSTCYBl1/D4FcqbULMMkASvR6s=
|
||||
github.com/quic-go/quic-go v0.50.0 h1:3H/ld1pa3CYhkcc20TPIyG1bNsdhn9qZBGN3b9/UyUo=
|
||||
github.com/quic-go/quic-go v0.50.0/go.mod h1:Vim6OmUvlYdwBhXP9ZVrtGmCMWa3wEqhq3NgYrI8b4E=
|
||||
github.com/refraction-networking/uquic v0.0.6 h1:9ol1oOaOpHDeeDlBY7u228jK+T5oic35QrFimHVaCMM=
|
||||
github.com/refraction-networking/uquic v0.0.6/go.mod h1:TFgTmV/yqVCMEXVwP7z7PMAhzye02rFHLV6cRAg59jc=
|
||||
github.com/refraction-networking/utls v1.6.7 h1:zVJ7sP1dJx/WtVuITug3qYUq034cDq9B2MR1K67ULZM=
|
||||
@@ -258,8 +258,8 @@ golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE
|
||||
golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
||||
golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
||||
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
|
||||
golang.org/x/exp v0.0.0-20250215185904-eff6e970281f h1:oFMYAjX0867ZD2jcNiLBrI9BdpmEkvPyi5YrBGXbamg=
|
||||
golang.org/x/exp v0.0.0-20250215185904-eff6e970281f/go.mod h1:BHOTPb3L19zxehTsLoJXVaTktb06DFgmdW6Wb9s8jqk=
|
||||
golang.org/x/exp v0.0.0-20250218142911-aa4b98e5adaa h1:t2QcU6V556bFjYgu4L6C+6VrCPyJZ+eyRsABUPs1mz4=
|
||||
golang.org/x/exp v0.0.0-20250218142911-aa4b98e5adaa/go.mod h1:BHOTPb3L19zxehTsLoJXVaTktb06DFgmdW6Wb9s8jqk=
|
||||
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
||||
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
||||
golang.org/x/image v0.24.0 h1:AN7zRgVsbvmTfNyqIbbOraYL8mSwcKncEj8ofjgzcMQ=
|
||||
|
||||
@@ -425,13 +425,6 @@ func (obj *roundTripper) RoundTrip(ctx *Response) (err error) {
|
||||
currentRetry--
|
||||
}
|
||||
}
|
||||
if currentRetry > maxRetryCount {
|
||||
if task.err == nil {
|
||||
task.err = fmt.Errorf("roundTrip retry %d times", maxRetryCount)
|
||||
} else {
|
||||
task.err = tools.WrapError(err, fmt.Errorf("roundTrip retry %d times", maxRetryCount))
|
||||
}
|
||||
}
|
||||
if task.err == nil && ctx.option.RequestCallBack != nil {
|
||||
if err = ctx.option.RequestCallBack(ctx); err != nil {
|
||||
task.err = err
|
||||
|
||||
82
socks5.go
82
socks5.go
@@ -8,12 +8,6 @@ import (
|
||||
"math"
|
||||
"net"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
var (
|
||||
errBadHeader = errors.New("bad header")
|
||||
// errUnsupportedMethod = errors.New("unsupported method")
|
||||
)
|
||||
|
||||
const MaxUdpPacket int = math.MaxUint16 - 28
|
||||
@@ -134,41 +128,26 @@ func ReadUdpAddr(r io.Reader) (Address, error) {
|
||||
type UDPConn struct {
|
||||
proxyAddress net.Addr
|
||||
net.PacketConn
|
||||
UDPConn *net.UDPConn
|
||||
// defaultTarget net.Addr
|
||||
prefix []byte
|
||||
bufRead [MaxUdpPacket]byte
|
||||
bufWrite [MaxUdpPacket]byte
|
||||
}
|
||||
|
||||
func NewUDPConn(packConn net.PacketConn, proxyAddress net.Addr) (*UDPConn, error) {
|
||||
conn := &UDPConn{
|
||||
func NewUDPConn(packConn net.PacketConn, proxyAddress net.Addr) *UDPConn {
|
||||
return &UDPConn{
|
||||
PacketConn: packConn,
|
||||
UDPConn: packConn.(*net.UDPConn),
|
||||
proxyAddress: proxyAddress,
|
||||
prefix: []byte{0, 0, 0},
|
||||
}
|
||||
return conn, nil
|
||||
}
|
||||
|
||||
// func NewUDPConn(raw net.PacketConn, proxyAddress net.Addr, defaultTarget net.Addr) (*UDPConn, error) {
|
||||
// conn := &UDPConn{
|
||||
// PacketConn: raw,
|
||||
// proxyAddress: proxyAddress,
|
||||
// defaultTarget: defaultTarget,
|
||||
// prefix: []byte{0, 0, 0},
|
||||
// }
|
||||
// return conn, nil
|
||||
// }
|
||||
|
||||
// ReadFrom implements the net.PacketConn ReadFrom method.
|
||||
func (c *UDPConn) ReadFrom(p []byte) (n int, addr net.Addr, err error) {
|
||||
n, addr, err = c.PacketConn.ReadFrom(c.bufRead[:])
|
||||
if err != nil {
|
||||
return 0, nil, err
|
||||
}
|
||||
if n < len(c.prefix) || addr.String() != c.proxyAddress.String() {
|
||||
return 0, nil, errBadHeader
|
||||
return 0, nil, errors.New("bad header")
|
||||
}
|
||||
buf := bytes.NewBuffer(c.bufRead[len(c.prefix):n])
|
||||
a, err := ReadUdpAddr(buf)
|
||||
@@ -179,7 +158,6 @@ func (c *UDPConn) ReadFrom(p []byte) (n int, addr net.Addr, err error) {
|
||||
return n, a, nil
|
||||
}
|
||||
|
||||
// WriteTo implements the net.PacketConn WriteTo method.
|
||||
func (c *UDPConn) WriteTo(p []byte, addr net.Addr) (n int, err error) {
|
||||
buf := bytes.NewBuffer(c.bufWrite[:0])
|
||||
buf.Write(c.prefix)
|
||||
@@ -192,61 +170,9 @@ func (c *UDPConn) WriteTo(p []byte, addr net.Addr) (n int, err error) {
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
data := buf.Bytes()
|
||||
_, err = c.PacketConn.WriteTo(data, c.proxyAddress)
|
||||
_, err = c.PacketConn.WriteTo(buf.Bytes(), c.proxyAddress)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
return n, nil
|
||||
}
|
||||
|
||||
// // Read implements the net.Conn Read method.
|
||||
// func (c *UDPConn) Read(b []byte) (int, error) {
|
||||
// n, addr, err := c.ReadFrom(b)
|
||||
// if err != nil {
|
||||
// return 0, err
|
||||
// }
|
||||
// if addr.String() != c.defaultTarget.String() {
|
||||
// return c.Read(b)
|
||||
// }
|
||||
// return n, nil
|
||||
// }
|
||||
|
||||
// // Write implements the net.Conn Write method.
|
||||
// func (c *UDPConn) Write(b []byte) (int, error) {
|
||||
// return c.WriteTo(b, c.defaultTarget)
|
||||
// }
|
||||
|
||||
// // RemoteAddr implements the net.Conn RemoteAddr method.
|
||||
// func (c *UDPConn) RemoteAddr() net.Addr {
|
||||
// return c.defaultTarget
|
||||
// }
|
||||
|
||||
func (c *UDPConn) SetReadBuffer(bytes int) error {
|
||||
return c.UDPConn.SetReadBuffer(bytes)
|
||||
}
|
||||
func (c *UDPConn) SetWriteBuffer(bytes int) error {
|
||||
return c.UDPConn.SetWriteBuffer(bytes)
|
||||
}
|
||||
func (c *UDPConn) SetDeadline(t time.Time) error {
|
||||
return c.UDPConn.SetDeadline(t)
|
||||
}
|
||||
func (c *UDPConn) SetReadDeadline(t time.Time) error {
|
||||
return c.UDPConn.SetReadDeadline(t)
|
||||
}
|
||||
func (c *UDPConn) SetWriteDeadline(t time.Time) error {
|
||||
return c.UDPConn.SetWriteDeadline(t)
|
||||
}
|
||||
func (c *UDPConn) ReadFromUDP(b []byte) (n int, addr *net.UDPAddr, err error) {
|
||||
return c.UDPConn.ReadFromUDP(b)
|
||||
}
|
||||
func (c *UDPConn) ReadMsgUDP(b, oob []byte) (n, oobn, flags int, addr *net.UDPAddr, err error) {
|
||||
return c.UDPConn.ReadMsgUDP(b, oob)
|
||||
}
|
||||
func (c *UDPConn) WriteToUDP(b []byte, addr *net.UDPAddr) (int, error) {
|
||||
return c.UDPConn.WriteToUDP(b, addr)
|
||||
}
|
||||
func (c *UDPConn) WriteMsgUDP(b, oob []byte, addr *net.UDPAddr) (n, oobn int, err error) {
|
||||
return c.UDPConn.WriteMsgUDP(b, oob, addr)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user