Ich versuche zu senden und empfangen zu/von einer UDP Multicast-Adresse mit UWP. Es funktioniert perfekt die ersten Male, aber nach einer Weile dieses Sende-Empfangs-Prozesses, wird es auf dem empfangenden Teil sperren. Ich wechselte von einem asynchronen Ansatz zu einem synchronen, aber immer noch dem gleichen. Selbst wenn ich einen neuen UDP-Client instanziiere, wird der Port blockiert, bis die App neu gestartet wird. Was mache ich falsch?UDP-Client nach mehreren senden/empfangen stoppt empfangen und blockiert Port
private UdpClient udp;
//inside main function:
if (udp == null)
{
udp = new UdpClient(new IPEndPoint(IPAddress.Any, portNumber));
//^the second time this is called, it will complain about port reuse
udp.Client.ReceiveTimeout = udp.Client.SendTimeout = 3000;
//udp.Client.SetSocketOption(SocketOptionLevel.Udp, SocketOptionName.ReuseAddress, true);
//^invalid
}
//await udp.SendAsync(data, data.Length, , portNumber);
//I changed from async to synchronous in case it was the issue, but no.
udp.Client.SendTo(data, new IPEndPoint(IPAddress.Parse(ipString), portNumber));
//the receive used to be async, too
byte[] receivedByte = new byte[udp.Client.ReceiveBufferSize];
try
{
udp.Client.Receive(receivedByte);
}
catch (Exception ex)
{
udp.Client.Shutdown(SocketShutdown.Both);
udp = null; // added these, but port still blocked until restart
}
Ich benutze UWP, und es gibt Methoden zur Klassenbibliothek, die nicht hier sind.
Glaubst du, dass ein Problem im Zusammenhang mit einem Rückstand oder einer begrenzten Anzahl von Sockets auftreten kann, die geöffnet werden dürfen? –
@Am_I_Hilflich weiß es nicht, denke aber nicht ... Ich schätze, es ist möglich, dass es sich um ein externes Problem handeln könnte ... – Tyress
Könnten Sie bitte ein minimales Beispiel für die Reproduktion Ihres Problems verwenden? –