首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UDP服务器客户端订阅服务器发布服务器

UDP服务器客户端订阅服务器发布服务器
EN

Stack Overflow用户
提问于 2012-01-06 20:50:33
回答 1查看 2.5K关注 0票数 1

我不太确定是否有可能出现以下情况。

仅使用UdpClient或Udp套接字,我希望实现一个发布者和多个客户端环境。

Udp服务器正在一台孤立的机器上通过互联网广播。一个或多个客户端根据需要“订阅”或“取消订阅”,从而接收广播。

是可能的吗?谢谢。

编辑:如果是这样的话,答案会详细说明吗?

编辑:如果不跟踪订阅者,这是可能的吗?

更多信息:

现有客户端代码:

代码语言:javascript
复制
IPEndPoint IPEP = new IPEndPoint(IPAddress.Parse("EXTERNAL IP"), PORT);
UdpClient UC = new UdpClient();
byte[] REZ;
while (true)
{
    REZ = UC.Receive(ref IPEP);
     Console.WriteLine("REC: " + Encoding.ASCII.GetString(REZ));
}

服务器也能这么简单吗?我是不是遗漏了什么?

附加信息:当使用实际的外部IP时,我得到以下错误:在执行此操作之前,必须调用Bind方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-06 22:26:17

答案仍然是“是的,这是可能的。”基本上,您的问题是描述UDP协议,您询问的所有内容都内置到UDP协议中。在UDP协议中,您不知道任何关于订阅者的信息,除非他们显式地标识自己(作为他们发送的数据的一部分)。然而,在UDP中,没有发布者和订阅者的概念,只有客户机。您的客户端可以发送数据,他们可以接收数据,连接到管道的每个客户端都可以看到其他客户端发布的内容。

  • 如果您想拥有一个严格的发布者,那么您只需让一个客户端将数据发送到管道中。
  • 如果您希望有一个严格的订阅者,那么您只需让给定的客户端从管道接收数据(就像在您的示例中所做的那样)。

服务器也能这么简单吗?我是不是遗漏了什么?

在UDP中,技术上没有客户机和服务器,每个端点都是客户机。但答案是(再次):是的,服务器也可以这么简单:

代码语言:javascript
复制
UdpClient udpClient = new UdpClient("www.contoso.com", 11000);
Byte[] sendBytes = Encoding.ASCII.GetBytes("Is anybody there");
try
{
    udpClient.Send(sendBytes, sendBytes.Length);
}
catch ( Exception e )
{
    Console.WriteLine( e.ToString());
}

上面的代码直接取自UdpClient.Send的文档。

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

https://stackoverflow.com/questions/8764324

复制
相关文章

相似问题

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