异步套接字是否支持同时向多个客户端发送消息?

时间:2012-01-23 13:24:21

标签: c# sockets

这会有用吗?

Socket someUdpSocket = new Socket(...);
EndPoint[] aLotOfClients = { ... };

foreach (EndPoint ep in aLotOfClients)
{
    someUdpSocket.BeginSendTo(someData, 0, someData.Length, 
                              SocketFlags.None, ep,
                              new AsyncCallback(someMethod), ep);
}

我无法找到这个问题的答案。

1 个答案:

答案 0 :(得分:1)

套接字一次只能将数据发送到单个地址,无论它是同步还是异步套接字。

但是,您可以将数据发送到一组特殊地址(假设您正在处理IP层),称为广播adressess。有两种不同的风格,一次向多个客户端发送数据:广播和多播。

广播将被传送到连接到网络的所有客户端,尽管大多数网络对广播施加了一些限制,因此网络不会被淹没。您子网的广播地址是该子网中由子网掩码定义的最后一个地址。您还可以广播到多个子网等。

多播更像是聊天室。在IPV4中有一组多播地址保留,您可以加入并保留由地址标识的多播组。当您向组发送一些数据时,网络硬件将确保将数据包的副本传递给加入该组的所有rceiver。

我建议你google周围的多播和广播(阅读rfc也不错),我希望我能帮你开始。