如何将网络客户端的 IP 转换为 Golang 中的字符串?
How do I get a network client's IP converted to a string in Golang?
我正在尝试在与服务器建立连接时获取客户端 IP。尝试使用 RemoteAddr()
returns addr 类型,虽然我可以使用 fmt.Println
打印到控制台,但我正在尝试将值分配给字符串变量。
这可能吗?或者是否有更好的方法来提取已连接客户端的 IP 地址?
我正在处理的函数示例(strRemoteAddr
赋值是有问题的部分,但我把它留作占位符...):
func GrabInput(conn net.Conn, strFromListenerNumber string) {
var strMessage string
var strRemoteAddr string
bufIncoming := make([]byte, 1024)
strRemoteAddr = conn.RemoteAddr()
for {
bytesRead, err := conn.Read(bufIncoming)
if err != nil {
LogEvent(strFromListenerNumber, err.Error())
return
}
strMessage = string(bufIncoming[0 : bytesRead-1])
LogEvent(strFromListenerNumber+": "+strRemoteAddr, strMessage)
}
}
似乎只是
strRemoteAddr = conn.RemoteAddr().String()
可以,net.Addr 类型具有用于字符串表示的方法 String()。
转换为*net.TCPAddr
if addr, ok := conn.RemoteAddr().(*net.TCPAddr); ok {
fmt.Println(addr.IP.String())
}
我正在尝试在与服务器建立连接时获取客户端 IP。尝试使用 RemoteAddr()
returns addr 类型,虽然我可以使用 fmt.Println
打印到控制台,但我正在尝试将值分配给字符串变量。
这可能吗?或者是否有更好的方法来提取已连接客户端的 IP 地址?
我正在处理的函数示例(strRemoteAddr
赋值是有问题的部分,但我把它留作占位符...):
func GrabInput(conn net.Conn, strFromListenerNumber string) {
var strMessage string
var strRemoteAddr string
bufIncoming := make([]byte, 1024)
strRemoteAddr = conn.RemoteAddr()
for {
bytesRead, err := conn.Read(bufIncoming)
if err != nil {
LogEvent(strFromListenerNumber, err.Error())
return
}
strMessage = string(bufIncoming[0 : bytesRead-1])
LogEvent(strFromListenerNumber+": "+strRemoteAddr, strMessage)
}
}
似乎只是
strRemoteAddr = conn.RemoteAddr().String()
可以,net.Addr 类型具有用于字符串表示的方法 String()。
转换为*net.TCPAddr
if addr, ok := conn.RemoteAddr().(*net.TCPAddr); ok {
fmt.Println(addr.IP.String())
}