Nehmen wir an, ich habe einen UDP-Socket, der auf einer bestimmten Adresse/Port geöffnet und dann gehängt wurde. Wenn ich versuche, einen neuen UDP-Socket (UDPClient
) an derselben Adresse/diesem Port zu initialisieren, wird natürlich eine SocketException ausgelöst, da festgestellt wird, dass sie bereits verwendet wird.Killing einen blockierten UDP-Socket
Ist es möglich, den gehängten Sockel aus dem Code zu töten, damit ich ihn wiederverwenden kann?
EDIT: Hier ist der Code verursacht die UDP (Apparently) Gracefully Closed UDPClient leaves the socket blocked
Nicht, dass ich bewusst bin. In diesem Fall sollten Sie normalerweise eine Zeitüberschreitung für die Verbindung festlegen. Alternativ gibt es potentielle Probleme damit, es konsistent zu machen, wenn der alte Socket wiederhergestellt wird, aber Sie können '.SetSocketOption (SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true)' aufrufen, bevor Sie sich mit einem neuen Socket verbinden. –
Haben Sie versucht, es zu schließen? –
Sie könnten einige 'beenden' Flag setzen und dann senden Sie den Port ein Datagramm selbst, um die Blockierung readFrom(), oder was auch immer, zurückzukehren. –