在go语言中获取UDP客户端的IP地址并通过端口号区分客户端示例

2023-06-01 00:00:00 客户端 示例 区分

你的UDP服务器程序需要在写给客户端之前找出UDP客户端的IP地址。

但是,你无法从net.UDPConn.RemoteAddr()中找到客户端的IP地址。


比如说:

 conn *net.UDPConn
 clientIP := conn.RemoteAddr() 
 fmt.Println(clientIP)   // <---- returns NIL


解决方案:

你的UDP服务器必须首先从UDP客户端接收数据,然后服务器才能找到客户端的IP地址。

你的服务器可能会使用

ReadFrom()、ReadFromUDP()、ReadMsgUDP()

函数来从客户端读取UDP数据。

这些函数将返回源地址:

https://golang.org/pkg/net/#Addr

你可以用它来提取客户端的IP地址。


例如 :

   buffer := make([]byte, 1024)
   n, addr, err := conn.ReadFromUDP(buffer)
   fmt.Println("UDP client : ", addr)

如果你有一个以上的客户连接从同一台客户机上连接,并且你需要区分它们,那么就用端口号来区分客户程序。


例如 :

客户端1程序:
UDP客户端 : 127.0.0.1:63937

客户端2程序:
UDP客户端 : 127.0.0.1:52132

注意 : 

在go语言中实现UDP客户端服务器读写实例

https://www.zongscan.com/demo333/96117.html


相关文章 :

https://golang.org/pkg/net/#UDPConn.ReadFrom
https://golang.org/pkg/net/#UDPConn.ReadFromUDP
https://golang.org/pkg/net/#UDPConn.ReadMsgUDP

相关文章