Hallo, ich möchte eine UDP-Verbinung wieder schließen:
Socket soUDP = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);IPEndPoint localIpEndPoint = new IPEndPoint(localHostEntry.AddressList[0], UDPPort);
soUDP.Bind(localIpEndPoint);
while (true)
{
Byte[] received = new Byte[256];
IPEndPoint tmpIpEndPoint = new IPEndPoint(localHostEntry.AddressList[0], UDPPort);
EndPoint remoteEP = (tmpIpEndPoint);
int bytesReceived = soUDP.ReceiveFrom(received, ref remoteEP);
...
}
Das Programm blockiert ja immer in der ReceiveFrom Zeile und wartet dort auf eine UDP-Anfrage. Wenn ich jetzt den Socket soUDP von einer anderen Stelle aus mit close() beenden möchte, erhalte ich folgende Exception:
"System.SystemException {"Ein Blockierungsvorgang wurde durch einen Aufruf von WSACancelBlockingCall unterbrochen"} System.SystemException".
Wie kann ich den UDP Socket beenden?
Gruss,
MD
Socket soUDP = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);IPEndPoint localIpEndPoint = new IPEndPoint(localHostEntry.AddressList[0], UDPPort);
soUDP.Bind(localIpEndPoint);
while (true)
{
Byte[] received = new Byte[256];
IPEndPoint tmpIpEndPoint = new IPEndPoint(localHostEntry.AddressList[0], UDPPort);
EndPoint remoteEP = (tmpIpEndPoint);
int bytesReceived = soUDP.ReceiveFrom(received, ref remoteEP);
...
}
Das Programm blockiert ja immer in der ReceiveFrom Zeile und wartet dort auf eine UDP-Anfrage. Wenn ich jetzt den Socket soUDP von einer anderen Stelle aus mit close() beenden möchte, erhalte ich folgende Exception:
"System.SystemException {"Ein Blockierungsvorgang wurde durch einen Aufruf von WSACancelBlockingCall unterbrochen"} System.SystemException".
Wie kann ich den UDP Socket beenden?
Gruss,
MD