猿问

如何在 TCP 连接中查找 IP:传入客户端的端口

收到来自 的连接后conn, err := listener.Accept(),我想在conn. 我试过用conn.LocalAddr()and conn.RemoteAddr()Documentation )来做这件事。.LocalAddr()只给出服务器进程的地址。.RemoteAddr()为客户端提供了正确的 IP,但端口号与我知道要绑定的客户端的端口号截然不同。如果有任何区别,我会在同一台机器上运行两个单独的进程来执行此操作。一个是客户端,一个是服务器。关于如何找到正确的 IP: 客户端端口的任何想法?我是使用LocalAddr还是RemoteAddr

不负相思意
浏览 202回答 2
2回答

Helenr

在 OSX 上,conn.RemoteAddr()与 netstat 输出相比,使用 go 1.4 报告的主机/端口组合是正确的。package mainimport (  "fmt"  "net"  "time")func main() {  ln, err := net.Listen("tcp", ":8080")  if err != nil {    panic(err)  }  for {    conn, err := ln.Accept()    if err != nil {      panic(err)    }    fmt.Println(conn.RemoteAddr())    time.Sleep(time.Minute)    conn.Close()  }}$ go run foo.go127.0.0.1:63418$ netstat -an | grep 8080tcp4       0      0  127.0.0.1.8080         127.0.0.1.63418        ESTABLISHEDtcp4       0      0  127.0.0.1.63418        127.0.0.1.8080         ESTABLISHED

蝴蝶刀刀

netstat -a 1 -f 在 windows shell 中。我是一个命令行人,这行得通,通过重定向将其写入文件。这将每秒重新运行,f 是解析 DNS 名称。
随时随地看视频慕课网APP

相关分类

Go
我要回答