【问题标题】:Get destination IP and port from Python DGRAM socket从 Python DGRAM 套接字获取目标 IP 和端口
【发布时间】:2019-07-12 14:25:23
【问题描述】:

我在Python中有以下UDP/DGRAMsocket

sock.bind((UDP_IP, UDP_PORT))

while True:
    data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes
    print "received message:", data

此代码在代理服务器中运行,因此目标 IP 和端口与套接字不匹配。我正在使用tproxy 拦截数据包。

如何获取目标 IP 和端口,而不是源 IP 和端口?

【问题讨论】:

  • 我想我已经回答了你的问题,但可能会误解你。您刚刚将套接字绑定到一个地址/端口,并且您已经获得了另一端的地址(在 addr 中),因此您已经获得了两条信息。
  • 它没有给我数据包的目标 IP 和端口。只有套接字正在侦听的内容,以及来自数据包的源 IP 和端口。此代码在代理服务器中运行,因此目标 IP 和端口与套接字不匹配。我正在使用tproxy 拦截数据包。
  • 如果recv_msg()存在于Python中,您需要使用它,无论选择是检索源地址。
  • 这个问题似乎已经在这里得到了回答:stackoverflow.com/a/44206723/1358308

标签: python sockets networking


【解决方案1】:

来自文档 socket.getsockname():

返回套接字自己的地址。例如,这对于找出 IPv4/v6 套接字的端口号很有用。

所以你想打印出sock.getsockname()

【讨论】:

  • 这给了我套接字自己的地址,正如你所写的那样。不是数据包的目标 IP 和端口。
  • 您对“目的地”一词的使用非常模棱两可,这取决于您谈论的是哪一方。即发送数据包时的目标是接收数据包时的源。我建议在再次谈论这个问题时更加准确......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多