正在通过多播向我发送xml源,但我不知道多播组地址。我可以改用localhost吗?也就是说,
Socket socket =
new Socket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);
IPEndPoint ip = new IPEndPoint(IPAddress.Any,8888);
socket.Bind(ip);
socket.SetSocketOption
(SocketOptionLevel.IP,
SocketOptionName.AddMembership,
我有三个网络接口的计算机-一个真实的和两个VMWare虚拟的。我希望在端口1900上接收来自UPNP设备的多播消息。
我试图激活所有适配器并为每个适配器创建一个套接字。另外,我设置了套接字选项ReuseAddr,关闭ExclusiveAddrUse套接字选项,并将每个套接字添加到多播组239.255.255.250。我将套接字绑定到addr: InterfaceAddr:1900
问题是,只有一个套接字接收消息-一个VMWare网络套接字。netstat -a -o -p UDP >netstat.txt向我展示了我所有的套接字都在监听:
Proto Local address
我知道网络上有很多关于C#中UDP多播的例子。这更多的是为了澄清只在发送时包含方法JoinMulticastGroup的必要性。我遇到的大多数代码示例几乎总是将此方法作为初始化代码的一部分。但是,如果程序或类只发送一次,那么它是不需要的?
也就是说,在另一个堆栈溢出问题上,有人使用了代码
public void SendMessage(string message)
{
var data = Encoding.Default.GetBytes(message);
using (var udpClient = new UdpClient(AddressFamily.InterNe