gpt4 book ai didi

sockets - IPv6:监听连接时, `::' 是否等同于 `0.0.0.0'?

转载 作者:行者123 更新时间:2023-12-03 21:20:53 28 4
gpt4 key购买 nike

当我检查 IPGlobalProperties.GetActiveTcpListeners() 的输出时,我在 0.0.0.0 上看到听众以及 :: .

我相信监听 0.0.0.0 上的端口相当于监听任何网络适配器上的端口,至少我对 Windows 套接字 API 的内存是这样的。
:: 对我来说也很有意义将意味着 IPv6 用语中的等价物,因此 [::]:49156 上的监听器将监听端口 49156在所有 IPv6 网络适配器上,如 [::1]:1434将是端口 1434仅在 IPv6 环回适配器上。

它是否正确?

我假设 IPv6 监听端点仅适用于 IPv6 适配器。也就是说,如果一个适配器只有一个 IPv4 地址,则连接到它的端口为 49156[::]:49156 上的监听器不会收到?

另外,有没有人注意到 GetActiveTcpListeners() 的 MSDN 文章错误地声明返回的对象“包括所有 TCP 状态中的监听器,除了监听状态。”?

最佳答案

I believe that listening on a port on 0.0.0.0 is equivalent to listening on a port on any network adapter, at least my memory of the Windows socket API says that this is so.


那是对的。 0.0.0.0定义为 INADDR_ANY并可用于监听所有本地 IPv4 适配器。

It also makes sense to me that :: would mean the equivalent in IPv6 parlance so a listener on :::49156 would be listening to port 49156 on all IPv6 network adapters where as ::1:1434 would be port 1434 on only the IPv6 loopback adapter.


从听力的角度来看,是的。 ::定义为 INADDR6_ANY并可用于监听所有本地 IPv6 适配器。 ::1定义为 INADDR6_LOOPBACK .

I assume that IPv6 listen end-points only apply to IPv6 adapters. That is, if an adapter only had an IPv4 address, connections to it port 49156 would not be received by a listener on :::49156?


这取决于听众。纯 IPv6 监听器无法监听 IPv4 适配器,也无法接受 IPv4 客户端。但是, dual-stack绑定(bind)到 INADDR6_ANY 的监听器可以绑定(bind)到 IPv4 和 IPv6 适配器并接受 IPv4 和 IPv6 客户端,其中 IPv4 地址由 accept() 报告, WSAAccept() , 和 getpeername()作为 IPv4-mapped IPv6 addresses .

关于sockets - IPv6:监听连接时, `::' 是否等同于 `0.0.0.0'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27480094/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com