如何将数据发送到多个特定 IP
How do I send data to multiple specific IP's
我正在编写一个 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();
}
据我所知,您可以使用单播、多播或广播。
由于您只对发送给一组特定的客户感兴趣,我只能推荐单播,因为其他两个将发送给那些也在听的人。
我唯一能想到的提高效率的方法是将代码放在一个 Parallel.Foreach 循环中并在其中创建 UdpClient,然后将数据发送出去?
public void SendToMultiple(IPAddress[] Recipients, byte[] Data)
{
Parallel.ForEach(Recipients,
Recipient =>
{
UdpClient Client = new UdpClient();
Client.Send(Data, Data.Length, new IPEndPoint(Recipient, PORT));
Client.Close();
});
}
我正在编写一个 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();
}
据我所知,您可以使用单播、多播或广播。 由于您只对发送给一组特定的客户感兴趣,我只能推荐单播,因为其他两个将发送给那些也在听的人。
我唯一能想到的提高效率的方法是将代码放在一个 Parallel.Foreach 循环中并在其中创建 UdpClient,然后将数据发送出去?
public void SendToMultiple(IPAddress[] Recipients, byte[] Data)
{
Parallel.ForEach(Recipients,
Recipient =>
{
UdpClient Client = new UdpClient();
Client.Send(Data, Data.Length, new IPEndPoint(Recipient, PORT));
Client.Close();
});
}