【问题标题】:How to get remote ip address and port from active udp connection?如何从活动 udp 连接中获取远程 IP 地址和端口?
【发布时间】:2019-08-30 21:42:31
【问题描述】:

我正在开发一个图形窗口应用程序。所以首选c++和c#的解决方案。

对于我的应用程序,我需要从特定进程的活动 udp 连接中获取远程地址和端口。

我尝试了IP Helper API,但是 UDP 的方法没有给出远程地址和端口。

我已经看到这些帖子Get Destination Ip/Port of active udp Connection?Remote address of active UDP connections in Windows using IP Helper

我明白为什么 IP Helper 不能完成这项工作(udp 是无连接的,需要捕获数据包),但我没有找到具体的实现方法。

您有准备好使用的解决方案或类似的解决方案吗?

【问题讨论】:

  • 您在使用广播吗?广播没有远程IP地址?有两种类型的 UDP。无连接的广播和有连接的非广播。
  • 通常使用 UDP,您将获得远程地址和端口以及您收到的每个数据包。
  • 没有 UDP 连接之类的东西。重新思考您的设计。
  • 正如您自己所说,UDP 是一种无连接协议。这意味着没有“活动连接”。
  • @jdweng "有两种类型的 UDP。无连接的广播和有连接的非广播" - 不正确。所有 UDP 流量都是无连接的,无论是否广播。

标签: c# c++ winapi udp iphelper


【解决方案1】:

正如您已经发现的那样,UDP 是无连接的,因此操作系统不会像 TCP 那样跟踪远程方信息。与 TCP 套接字不同,UDP 套接字一次可以与多个远程方通信,其中sendto() 指定目标 ip/port,recvfrom() 报告发送方的 ip/port。

我明白为什么 IP Helper 不能完成这项工作(udp 是无连接的,需要捕获数据包),但我没有找到具体的实现方法。

您需要使用抓包库,例如libpcap,并手动跟踪您看到的传出数据包的 ips/端口。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-29
    • 1970-01-01
    • 2016-10-17
    • 1970-01-01
    • 2019-11-02
    • 1970-01-01
    • 1970-01-01
    • 2014-05-26
    相关资源
    最近更新 更多