我有一个产品直接插入到我的计算机的以太网端口,发送多播数据包到224.224.10.10和UDP端口24588.我已经在下面的代码中设置了我的UDPclient,感觉我已经设置正确,但我仍然没有收到任何数据包。我总是发现一个例外,说我超时等待回应。任何想法或明显的错误?使用UDPClient获取多播消息
在发布此消息之前,我查看了很多问题,但无法获得解决方案,而且找不到与我拥有的设置类型相同的任何人。
public class ReceiverClass
{
private UdpClient m_UDPClient = null;
private Thread m_UDPReceiverThread = null;
private bool m_ContinueReceiving = false;
private readonly object m_sync = new object();
private const int UDP_PORT = 24588;
public ReceiverClass()
{
m_ContinueReceiving = true;
m_UDPClient = new UdpClient(UDP_PORT);
m_UDPClient.Client.ReceiveTimeout = 20000;
m_UDPReceiverThread = new Thread(ReceiveData) { IsBackground = true };
m_UDPReceiverThread.Start();
}
private void ReceiveData()
{
bool Continue;
byte[] ReceiveBuffer;
IPEndPoint defaultIP = new IPEndPoint(IPAddress.Any, 0);
m_UDPClient.JoinMulticastGroup(IPAddress.Parse("224.224.10.10"));
m_UDPClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
lock (m_sync)
{
Continue = m_ContinueReceiving;
}
while (Continue)
{
try
{
ReceiveBuffer = m_UDPClient.Receive(ref defaultIP);
if (null != ReceiveBuffer)
{
// Do stuff with received...
}
}
catch (Exception e)
{
// ooo eee kill stream
Dispose(false);
return;
}
finally
{
lock (m_sync)
{
Continue = m_ContinueReceiving;
}
}
}
}
}
是的,它没有帮助我。我认为广播和多播消息之间的设置有所不同,但我不知道是什么。仍然卡住。感谢您的帮助,但我很感激。 – shoyo