2014-05-09 15 views
6

Supponiamo di avere un socket UDP aperto su un determinato indirizzo/porta e quindi impiccato. Quando provo a inizializzare un nuovo socket UDP (UDPClient) sullo stesso indirizzo/porta, solleva un SocketException poiché trova che è già in uso.Uccisione di una presa UDP bloccata

È possibile eliminare dal codice la presa impiccata in modo da poterla riutilizzare?

EDIT: Ecco il codice che causa l'UDP di rimanere bloccato (Apparently) Gracefully Closed UDPClient leaves the socket blocked

+1

Non che io sappia. Tradizionalmente, se ciò dovesse accadere, dovresti impostare un timeout sulla connessione. In alternativa, ci sono potenziali problemi nel farlo in modo coerente se il vecchio socket viene ripristinato, ma è possibile chiamare '.SetSocketOption (SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true)' prima di connettersi con un nuovo socket. –

+1

Hai provato a chiuderlo? –

+0

È possibile impostare un contrassegno "di fine" e quindi inviare manualmente un datagramma alla porta per rendere il blocco readFrom(), o qualsiasi altra cosa, restituire. –

risposta

0

È possibile impostare l'opzione socket ReuseAddress nella presa in modo che permette di ascoltare sulla stessa porta IP & su un socket diverso.

+0

Ho provato che, non ha funzionato. –

Problemi correlati