Date: Thu, 28 Mar 2024 23:27:24 +0800 (CST) Message-ID: <358377442.5444.1711639644675@localhost.localdomain> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_5443_600714660.1711639644675" ------=_Part_5443_600714660.1711639644675 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html
gudp
=E6=A8=A1=E5=9D=97=E6=8F=90=E4=BE=9B=E4=BA=86=E9=9D=9E=
=E5=B8=B8=E7=AE=80=E4=BE=BF=E6=98=93=E7=94=A8=E7=9A=84gudp.Conn
=E9=93=BE=E6=8E=A5=E6=93=8D=E4=BD=9C=E5=AF=B9=E8=B1=A1=E3=80=82
=E4=BD=BF=E7=94=A8=E6=96=B9=E5=BC=8F=EF=BC=9A
import "github.com/gogf/gf/v2/ne= t/gudp"
=E6=8E=A5=E5=8F=A3=E6=96=87=E6=A1=A3=EF=BC=9A https://pkg.go.dev/github.com/gogf/gf/v2/net/gudp= p>
type Conn func NewConn(raddr string, laddr ...string) (*Conn, error) func NewConnByNetConn(udp *net.UDPConn) *Conn func (c *Conn) Close() error func (c *Conn) LocalAddr() net.Addr func (c *Conn) Recv(length int, retry ...Retry) ([]byte, error) func (c *Conn) RecvPkg(retry ...Retry) (result []byte, err error) func (c *Conn) RecvPkgWithTimeout(timeout time.Duration, retry ...Retry= ) ([]byte, error) func (c *Conn) RecvWithTimeout(length int, timeout time.Duration, retry= ...Retry) ([]byte, error) func (c *Conn) RemoteAddr() net.Addr func (c *Conn) Send(data []byte, retry ...Retry) error func (c *Conn) SendPkg(data []byte, retry ...Retry) error func (c *Conn) SendPkgWithTimeout(data []byte, timeout time.Duration, r= etry ...Retry) error func (c *Conn) SendRecv(data []byte, receive int, retry ...Retry) ([]by= te, error) func (c *Conn) SendRecvPkg(data []byte, retry ...Retry) ([]byte, error) func (c *Conn) SendRecvPkgWithTimeout(data []byte, timeout time.Duratio= n, retry ...Retry) ([]byte, error) func (c *Conn) SendRecvWithTimeout(data []byte, receive int, timeout ti= me.Duration, retry ...Retry) ([]byte, error) func (c *Conn) SendWithTimeout(data []byte, timeout time.Duration, retr= y ...Retry) error func (c *Conn) SetDeadline(t time.Time) error func (c *Conn) SetRecvBufferWait(d time.Duration) func (c *Conn) SetRecvDeadline(t time.Time) error func (c *Conn) SetSendDeadline(t time.Time) error
=E5=8F=AF=E4=BB=A5=E7=9C=8B=E5=88=B0=EF=BC=8Cgudp.Conn
=E5=
=92=8Cgtcp.Conn
=E7=9A=84=E6=96=B9=E6=B3=95=E9=9D=9E=E5=B8=B8=
=E7=B1=BB=E4=BC=BC=EF=BC=8C=E5=B9=B6=E4=B8=94=E4=B9=9F=E6=94=AF=E6=8C=81=E7=
=AE=80=E5=8D=95=E5=8D=8F=E8=AE=AE=E7=9A=84=E6=B6=88=E6=81=AF=E5=8C=85=E6=96=
=B9=E6=B3=95=E3=80=82
gudp.Conn
=E7=9A=84=E6=93=8D=E4=BD=9C=E7=BB=9D=E5=A4=A7=E9=
=83=A8=E5=88=86=E7=B1=BB=E4=BC=BC=E4=BA=8Egtcp
=E7=9A=84=E6=93=
=8D=E4=BD=9C=E6=96=B9=E5=BC=8F=EF=BC=88=E5=A4=A7=E9=83=A8=E5=88=86=E7=9A=84=
=E6=96=B9=E6=B3=95=E5=90=8D=E7=A7=B0=E4=B9=9F=E7=9B=B8=E5=90=8C=EF=BC=89=EF=
=BC=8C=E4=BD=86=E7=94=B1=E4=BA=8EUDP
=E6=98=AF=E9=9D=A2=E5=90=
=91=E9=9D=9E=E8=BF=9E=E6=8E=A5=E7=9A=84=E5=8D=8F=E8=AE=AE=EF=BC=8C=E5=9B=A0=
=E6=AD=A4gudp.Conn
=EF=BC=88=E5=BA=95=E5=B1=82=E9=80=9A=E4=BF=
=A1=E7=AB=AF=E5=8F=A3=EF=BC=89=E4=B9=9F=E5=8F=AA=E8=83=BD=E5=AE=8C=E6=88=90=
=E6=9C=80=E5=A4=9A=E4=B8=80=E6=AC=A1=E6=95=B0=E6=8D=AE=E5=86=99=E5=85=A5=E5=
=92=8C=E8=AF=BB=E5=8F=96=EF=BC=8C=E5=AE=A2=E6=88=B7=E7=AB=AF=E4=B8=8B=E4=B8=
=80=E6=AC=A1=E5=86=8D=E4=B8=8E=E7=9B=AE=E6=A0=87=E6=9C=8D=E5=8A=A1=E7=AB=AF=
=E8=BF=9B=E8=A1=8C=E9=80=9A=E4=BF=A1=E7=9A=84=E6=97=B6=E5=80=99=EF=BC=8C=E5=
=B0=86=E9=9C=80=E8=A6=81=E5=88=9B=E5=BB=BA=E6=96=B0=E7=9A=84Conn=E5=AF=B9=E8=B1=A1=E8=BF=9B=E8=A1=8C=E9=80=9A=E4=BF=A1=E3=80=82
package main import ( =09"fmt" =09"github.com/gogf/gf/v2/frame/g" =09"github.com/gogf/gf/v2/net/gudp" =09"github.com/gogf/gf/v2/os/gtime" =09"time" ) func main() { =09// Server =09go gudp.NewServer("127.0.0.1:8999", func(conn *gudp.Conn) { =09=09defer conn.Close() =09=09for { =09=09=09data, err :=3D conn.Recv(-1) =09=09=09if len(data) > 0 { =09=09=09=09if err :=3D conn.Send(append([]byte("> "), data...)); err != =3D nil { =09=09=09=09=09g.Log().Error(err) =09=09=09=09} =09=09=09} =09=09=09if err !=3D nil { =09=09=09=09g.Log().Error(err) =09=09=09} =09=09} =09}).Run() =09time.Sleep(time.Second) =09// Client =09for { =09=09if conn, err :=3D gudp.NewConn("127.0.0.1:8999"); err =3D=3D nil { =09=09=09if b, err :=3D conn.SendRecv([]byte(gtime.Datetime()), -1); err = =3D=3D nil { =09=09=09=09fmt.Println(string(b), conn.LocalAddr(), conn.RemoteAddr()) =09=09=09} else { =09=09=09=09g.Log().Error(err) =09=09=09} =09=09=09conn.Close() =09=09} else { =09=09=09g.Log().Error(err) =09=09} =09=09time.Sleep(time.Second) =09} }
=E8=AF=A5=E7=A4=BA=E4=BE=8B=E4=B8=8Egtcp.Conn
=E4=B8=AD=E7=
=9A=84=E9=80=9A=E4=BF=A1=E7=A4=BA=E4=BE=8B=E7=B1=BB=E4=BC=BC=EF=BC=8C=E4=B8=
=8D=E5=90=8C=E7=9A=84=E6=98=AF=EF=BC=8C=E5=AE=A2=E6=88=B7=E7=AB=AF=E4=B8=8E=
=E6=9C=8D=E5=8A=A1=E7=AB=AF=E6=97=A0=E6=B3=95=E4=BF=9D=E6=8C=81=E8=BF=9E=E6=
=8E=A5=EF=BC=8C=E6=AF=8F=E6=AC=A1=E9=80=9A=E4=BF=A1=E9=83=BD=E9=9C=80=E8=A6=
=81=E5=88=9B=E5=BB=BA=E7=9A=84=E6=96=B0=E7=9A=84=E8=BF=9E=E6=8E=A5=E5=AF=B9=
=E8=B1=A1=E8=BF=9B=E8=A1=8C=E9=80=9A=E4=BF=A1=E3=80=82
=E6=89=A7=E8=A1=8C=E5=90=8E=EF=BC=8C=E8=BE=93=E5=87=BA=E7=BB=93=E6=9E=9C= =E5=A6=82=E4=B8=8B=EF=BC=9A
> 20= 18-07-21 23:13:31 127.0.0.1:33271 127.0.0.1:8999 > 2018-07-21 23:13:32 127.0.0.1:45826 127.0.0.1:8999 > 2018-07-21 23:13:33 127.0.0.1:58027 127.0.0.1:8999 > 2018-07-21 23:13:34 127.0.0.1:33056 127.0.0.1:8999 > 2018-07-21 23:13:35 127.0.0.1:39260 127.0.0.1:8999 > 2018-07-21 23:13:36 127.0.0.1:33967 127.0.0.1:8999 > 2018-07-21 23:13:37 127.0.0.1:52359 127.0.0.1:8999 ...