首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >正在使用的多播侦听器端口

正在使用的多播侦听器端口
EN

Stack Overflow用户
提问于 2020-02-27 22:39:41
回答 1查看 328关注 0票数 0

我对多播编程很陌生。到目前为止,我可以成功地从两个不同的进程(发送方和接收方)发送和接收多播消息。我的问题是听筒..。

ReceiverCode

代码语言:javascript
运行
复制
private static void ReceiveMulticastMessages()
{
    var groupEndPoint = new IPEndPoint(IPAddress.Parse("238.8.8.8"), 23888);
    var localEndPoint = new IPEndPoint(IPAddress.Any, 23888);

    using (var udpClient = new UdpClient())
    {
        udpClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
        udpClient.Client.Bind(localEndPoint);
        udpClient.JoinMulticastGroup(groupEndPoint.Address, localEndPoint.Address);

        while (true)
        {
            var remoteEndPoint = new IPEndPoint(IPAddress.Any, 0);
            var bytes = udpClient.Receive(ref remoteEndPoint);
            var message = Encoding.ASCII.GetString(bytes);
            Console.WriteLine(message);
        }
    }
}

只要我为该23888指定端口localEndPoint.,上述代码即可工作。如果更改本地端口号,则不会收到任何消息。我更愿意将它设置为0,这样操作系统就可以选择端口。为什么我不能指定一个与多播组不同的本地端口?

假设本地端点端口必须与多播组端口匹配,客户端如何处理本地端口冲突?

另一方面,应用程序(多播发送方)如何选择多播组端口,从而使任何订阅者都不会有端口冲突?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-02 19:21:04

在发送任何UDP消息(不仅仅是muticast消息)时,发送方发送给的端口必须与接收方侦听的端口匹配。这就是信息如何到达正确的地方。如果将消息发送到接收方绑定的端口,则接收方将得不到消息。

因此,需要定义一个端口号,以便接收方侦听,服务器将发送到该端口号。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60442765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档