Bar*_*rim 4 string network-programming go
我正在尝试在与服务器建立连接时获取客户端IP.尝试使用RemoteAddr()返回一个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)
}
}
Run Code Online (Sandbox Code Playgroud)
Uve*_*tel 14
似乎只是
strRemoteAddr = conn.RemoteAddr().String()
Run Code Online (Sandbox Code Playgroud)
可以这样做,net.Addr类型有字符串表示的方法String().
mil*_*sna 14
将其转换为 *net.TCPAddr
if addr, ok := conn.RemoteAddr().(*net.TCPAddr); ok {
fmt.Println(addr.IP.String())
}
Run Code Online (Sandbox Code Playgroud)