在尝试将套接字绑定到多播IP地址时,我遇到了C#.NET框架Socket类的问题。在Microsoft的文档(参见下面的链接)中,Bind()方法会警告“如果您打算接收多播数据报,则必须使用多播端口号调用Bind方法。”
我不相信端口号是多播/单播/广播特定的。你知道微软的意思吗?
https://msdn.microsoft.com/en-us/library/system.net.sockets.socket.bind(v=vs.110).aspx
答案 0 :(得分:2)
多播地址包括特定的I.P.地址以及端口号。这不是我们传统上认为的i.p.机器的地址(客户端或服务器),它是单播协议的一部分。
以IPV4术语表示的多播地址为224.n.n.n至239.n.n.n
基本上,地址的前4位是1110
为了明确的目的,其中有特定的子范围。
您基本上选择了其他应用没有使用的地址和端口。您可能希望使用239.nnn范围内的地址,因为这是为“管理范围”保留的 - 这基本上是“留在我的网络上”(尽管网络工程师可能会对该描述有所帮助)。
以下是一个示例,其中显示了客户端和服务器的连接: 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
答案 1 :(得分:0)
如果多播连接支持UDP,则应将多播端口设置为4003。 我能想到的“多播端口”区别的唯一原因是,是否为UDP或TCP以外的某些协议打开了套接字连接,但是同一远程主机需要TCP / UDP多播连接。