c# - 什么是组播端口号?

标签 c# sockets networking

在尝试将套接字绑定(bind)到多播 IP 地址时,我在使用 C# .NET 框架套接字类时遇到了一些问题。在 Microsoft 的 Bind() 方法文档(参见下面的链接)中,他们警告说“如果您打算接收多播数据报,则必须使用多播端口号调用 Bind 方法。”

我不认为端口号是特定于多播/单播/广播的。您知道 Microsoft 的意思吗?

https://msdn.microsoft.com/en-us/library/system.net.sockets.socket.bind(v=vs.110).aspx

最佳答案

多播地址包括一个特定的 I.P.地址以及端口号。这不是我们传统上认为的 i.p.机器(客户端或服务器)的地址,它是单播协议(protocol)的一部分。

多播地址,在 IPV4 术语中,是 224.n.n.n 到 239.n.n.n

基本上地址的前4位是1110

为了明确的目的,其中有特定的子范围。

您基本上选择了一个没有其他应用程序使用的地址和端口。您可能希望使用 239.n.n.n 范围内的地址,因为该地址是为“管理范围”保留的 - 基本上是“留在我的网络上”(尽管网络工程师可能适合该描述)。

这是一个示例,显示了客户端和服务器的连接: http://www.jarloo.com/c-udp-multicasting-tutorial/

(代码格式化在中间失败,服务器的末端和客户端的开始合并在一起,有一些应该是文本的东西,但你会解决的)。

看到他们都连接在同一个 i.p.地址和相同的端口。

此页面说明了我的意思,第一个位为 1110,并链接到 ipv6 多播讨论:http://www.tcpipguide.com/free/t_IPMulticastAddressing.htm (还有很多关于单播的信息,这是大多数互联网流量的内容)。

当然维基百科也有一些讨论。
https://en.wikipedia.org/wiki/Multicast_address

关于c# - 什么是组播端口号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44731350/

相关文章:

c# - 使用网络引用

c# - 在类库中获取 UI 调度程序

c# - 在不加载它的情况下获取程序集中的字符串

android - 使用任何IP和任何端口号android监听数据报套接字

java - Safari 5/iOS,WebSocket 握手有时有效

python - 如何让 2 个客户端在都连接到会点服务器后直接相互连接?

List<String[]> 的 C# "funny"问题

Windows 7 在启动过程和登录之前连接到网络

macos - Mac OS 本地代理,连接 ECONNREFUSED::1:3000

algorithm - 如何以编程方式证明 "Six Degrees of Separation"概念?