我使用UdpClient
发送有关多播地址的数据。UdpClient:发送数据时指定源端口
的代码看起来是这样的:
m_udpclientSender = new UdpClient();
m_remoteEndPoint = new IPEndPoint(m_multicastAddress, m_port);
m_udpclientSender.ExclusiveAddressUse = false;
m_udpclientSender.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
m_udpclientSender.JoinMulticastGroup(m_multicastAddress, 255);
m_udpclientSender.ExclusiveAddressUse = false;
m_udpclientSender.Send(buffer, buffer.Length, m_remoteEndPoint);
它发送到正确的端口/ IP,但它从一个随机端口(预期)发行,但我需要/想这是从发一个特定的端口(我也发送相同的端口)。
我看到:How to specify source port of a UdpPacket?
但我需要不完全使用地址,如果我给这个在构造函数中,我得到了一个异常(说这已绑定)。
我必须放置相同的端口,因为协议规定响应不应该是多播的。
你的udpclient的对应端已经在指定的端口上侦听了,对吗?所以它知道它必须回答哪个端口(它正在监听的端口)。那么为什么你要指定源端口? – faceman 2013-02-19 10:12:59
mDNS协议定义如果发件人端口不是5353(mDNS端口),则它是UNICAST查询。这意味着我不会在我正在监听的多播组中收到它(而另一个也不会收到此答复)。 – J4N 2013-02-19 11:24:29
我同意David Pfeffer,但在您的代码中,您仍然会遇到ExclusiveAddressUse属性的问题。检查了这一点:[链接](http://msdn.microsoft.com/en-us/library/system.net.sockets.udpclient.exclusiveaddressuse.aspx)。也许直接使用套接字类会更好。 – faceman 2013-02-19 13:00:03