【发布时间】:2019-12-09 13:14:29
【问题描述】:
我正在编写一个需要将相同数据发送给多个特定接收者的 C# 程序。我不能使用多播,因为这会将数据发送给所有监听多播地址的人。
我目前的解决方案是遍历收件人并将数据分别发送给每个收件人,但我正在寻找更有效的方法。
这是我目前的解决方案:
public void SendToMultiple(IPAddress[] Recipients, byte[] Data)
{
UdpClient Client = new UdpClient();
foreach(IPAddress Recipient in Recipients)
{
Client.Send(Data, Data.Length, new IPEndPoint(Recipient, PORT));
}
Client.Close();
}
【问题讨论】:
-
由于多播不存在,无论您做什么,最终都会通过您的网络接口串行发送数据。任何相对现代的机器都会很容易地使接口饱和(即客户端将在网络允许的情况下以最快的速度接收数据)。除非使用多个 NIC,否则其余的将是对您的循环进行微优化...顺便说一句,您如何确保客户端接收数据?还是只是一劳永逸: