我不太确定是否有可能出现以下情况。
仅使用UdpClient或Udp套接字,我希望实现一个发布者和多个客户端环境。
Udp服务器正在一台孤立的机器上通过互联网广播。一个或多个客户端根据需要“订阅”或“取消订阅”,从而接收广播。
是可能的吗?谢谢。
编辑:如果是这样的话,答案会详细说明吗?
编辑:如果不跟踪订阅者,这是可能的吗?
更多信息:
现有客户端代码:
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方法。
发布于 2012-01-06 22:26:17
答案仍然是“是的,这是可能的。”基本上,您的问题是描述UDP协议,您询问的所有内容都内置到UDP协议中。在UDP协议中,您不知道任何关于订阅者的信息,除非他们显式地标识自己(作为他们发送的数据的一部分)。然而,在UDP中,没有发布者和订阅者的概念,只有客户机。您的客户端可以发送数据,他们可以接收数据,连接到管道的每个客户端都可以看到其他客户端发布的内容。
服务器也能这么简单吗?我是不是遗漏了什么?
在UDP中,技术上没有客户机和服务器,每个端点都是客户机。但答案是(再次):是的,服务器也可以这么简单:
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的文档。
https://stackoverflow.com/questions/8764324
复制相似问题