我使用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