如何在Golang的UDP服务器上获取客户端ip地址?

我在旅途中成功运行了udp服务器</ p>

  func main  (){
service:=“ 0.0.0.0:27014"
udpAddr,err:= net.ResolveUDPAddr(” udp4“,service)
checkError(err)
conn,err:= net.ListenUDP(” udp”,udpAddr)
checkError(err)
for {
handleClient(conn)
}
}
</ code> </ pre>

但我想知道如何 我可以找出谁(远程IP地址,客户端IP地址)向我的服务器发送请求</ p>
</ div>

展开原文

原文

I run a udp server successfully on go

func main() {
    service := "0.0.0.0:27014"
    udpAddr, err := net.ResolveUDPAddr("udp4", service)
    checkError(err)
    conn, err := net.ListenUDP("udp", udpAddr)
    checkError(err)
    for {
        handleClient(conn)
    }
}

But i Wanted to know how can i find out who(remote ip address, Client ip address) send request to my server

udp

1个回答



在连接模式下,您可以使用 LocalAddr() RemoteAddr()</ a >连接对象的方法。</ p>

在断开连接(即经典)模式下,可以使用以下方法之一获取数据报本身的地址信息:</ p>

  func(c * UDPConn)ReadFrom(b [] byte)(int,Addr,error)
ReadFrom实现PacketConn ReadFrom方法。

func(c * UDPConn)ReadFromUDP(b [] byte) (n int,addr * UDPAddr,err错误)
ReadFromUDP从c读取UDP数据包,并将有效负载复制到b。 它返回复制到b中的字节数以及数据包上的返回地址。

func(c * UDPConn)ReadMsgUDP(b,oob [] byte)(n,oobn,标志int,addr * UDPAddr,err 错误)
ReadMsgUDP从c读取一个数据包,将有效负载复制到b,并将关联的带外数据复制到oob。 它返回复制到b中的字节数,复制到oob中的字节数,在数据包上设置的标志以及数据包的源地址。
</ code> </ pre>

地址信息是这些方法签名中返回值的一部分。</ p>
</ div>

展开原文

原文

In connected mode, you can use the LocalAddr() and RemoteAddr() methods of the connection object.

In disconnected (i.e. classical) mode, you get the address information with the datagram itself using one of the following methods:

func (c *UDPConn) ReadFrom(b []byte) (int, Addr, error)
ReadFrom implements the PacketConn ReadFrom method.

func (c *UDPConn) ReadFromUDP(b []byte) (n int, addr *UDPAddr, err error)
ReadFromUDP reads a UDP packet from c, copying the payload into b. It returns the number of bytes copied into b and the return address that was on the packet.

func (c *UDPConn) ReadMsgUDP(b, oob []byte) (n, oobn, flags int, addr *UDPAddr, err error)
ReadMsgUDP reads a packet from c, copying the payload into b and the associated out-of-band data into oob. It returns the number of bytes copied into b, the number of bytes copied into oob, the flags that were set on the packet and the source address of the packet.

The address information is part of the return values in the signature of these methods.

dongwei3336
dongwei3336 谢谢迪迪埃,我正在使用ReadFromUDP,addr.IP返回远程IP地址
6 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐