Ich habe ein Produkt direkt an den Ethernet-Port meines Computers angeschlossen, Multicast-Pakete zu 224.224.10.10 und UDP-Port 24588 zu senden. Ich habe meine UDPclient in dem Code unten eingerichtet, und ich fühle mich wie ich es richtig eingerichtet habe, aber ich bekomme immer noch keine Pakete. Ich erhalte immer eine Ausnahme und sage, dass ich auf eine Antwort gewartet habe. Irgendwelche Gedanken oder eklatante Fehler?Empfangen von Multicast-Nachrichten mit UDPClient
Ich habe mir viele Fragen angesehen, bevor ich das gepostet habe, aber ich konnte keine Lösung finden, und ich konnte niemanden finden, der die gleiche Art von Setup hatte wie ich.
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;
}
}
}
}
}
Ja, es hat mir nicht geholfen. Es gibt einen Unterschied im Setup zwischen Broadcast und Multicast-Nachrichten, aber ich weiß nicht was. Immer noch fest. Danke für die Hilfe, ich weiß es zu schätzen. – shoyo