为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

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

2 回答

?
Helenr

TA贡献1780条经验 获得超4个赞

在 OSX 上,conn.RemoteAddr()与 netstat 输出相比,使用 go 1.4 报告的主机/端口组合是正确的。


package main


import (

  "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.go

127.0.0.1:63418


$ netstat -an | grep 8080

tcp4       0      0  127.0.0.1.8080         127.0.0.1.63418        ESTABLISHED

tcp4       0      0  127.0.0.1.63418        127.0.0.1.8080         ESTABLISHED


查看完整回答
反对 回复 2021-09-10
?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

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


查看完整回答
反对 回复 2021-09-10
  • 2 回答
  • 0 关注
  • 201 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信