0

我很好奇为什么在调用时给你sockaddr的里面使用。这不是那么直接的原因是因为包含有关地址端口的信息。这类似于 .NET 的类。pcap_addr_tpcap_findalldevssockaddr_inSystem.Net.IPEndPoint

如果我们正在查看一个 .NET 库,我不希望看到一个属性,例如带有关于属于设备的地址的描述的属性。据我所知,在描述系统上的设备时,没有协议定义地址和端口。

在我所有的设备(仅限 IPv4 和 IPv6)上,端口为 0。

何时将地址和端口关联到设备作为其拥有的端点之一是有益的?我问的原因是因为我正在为 libpcap 开发一个 C# 绑定,并且想知道以我的类上描述的属性sockaddr_in的形式将所有数据公开给用户是否有用或只是错误/愚蠢特定设备拥有的地址。System.Net.IPEndPointNetworkDeviceAddress

4

1 回答 1

1

何时将地址和端口关联到设备作为其拥有的端点之一是有益的?

充其量很少,而且可能永远不会。您假设这sockaddr就是使用 a 的原因。

事实上,它被用作支持多种地址类型的一种方式;是的,asockaddr 可能包含一个端口号,如果它是AF_INETor AF_INET6,但是,正如“if it's”子句所暗示的那样,它还包含一个地址族值。

libpcap/WinPcap 是一个跨平台库,最初是为 BSD UN*X 创建的,早在 .NET出现之前就创建了,所以它显然不是在设计时考虑到 .NET 的网络对象。(pcap_findalldevs()在最初的 libpcap 中不是 API,但它是在 2001 年 8 月至 2001 年 9 月添加回来的,那是在 .NET 1.0 的最终版本出现之前。)

端口号未设置为任何重要的值pcap_findalldevs(),因此无需在包装器中公开它。

于 2013-06-30T19:08:04.643 回答