Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 19287|Risposta: 1

[Fonte] [Combattimento reale] UDP System.Net.Sockets.SocketException

[Copiato link]
Pubblicato su 09/03/2017 10:16:26 | | |
System.Net.Sockets.SocketException (0x80004005): L'host remoto ha forzato la chiusura di una connessione esistente.   In System.Net.Sockets.Socket.ReceiveFrom(Byte[] b



Durante la comunicazione UDP, usando try... La istruzione catch riceve sempre un errore quando si accettano dati:
System.Net.Sockets.SocketException (0x80004005): L'host remoto ha forzato la chiusura di una connessione esistente.
La soluzione più stupida fin dall'inizio era non fare nulla nella funzione catch e lasciare che la funzione della porta di ascolto continuasse a funzionare. Ma questa non è una soluzione a lungo termine, e ho cercato online a lungo e ho trovato la spiegazione di Microsoft.


Spiegazione di Microsoft: http://support.microsoft.com/kb/263823

Soluzione:








Precedente:Eseguito con successo un buco UDP [Ristampa]
Prossimo:Javascrip{filter}t window.print() imposta lo stile di stampa e il contenuto
 Padrone di casa| Pubblicato su 09/03/2017 10:17:54 |
Dopo aver inizializzato l'oggetto, imposta le proprietà come segue:
                    uint IOC_IN = 0x80000000;
                    uint IOC_VENDOR = 0x18000000;
                    uint SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12;
//uc为接收数据所使用的UdpClient,不同程序自己手改
            UC. Client.IOControl((int)SIO_UDP_CONNRESET, nuovo byte[] {Convert.ToByte(false)}, null);

Metodo Socket.IOControl (IOControlCode, byte[], byte[])
Usa IOControlCode per specificare il codice di controllo per impostare una modalità operativa a basso livello per il socket.
parametro
ioControlCode
Un valore IOControlCode che specifica il codice di controllo per l'azione da eseguire.
optionInValue
Un array di tipo Byte contenente i dati di ingresso richiesti dall'operazione.
optionOutValue
Un array di tipo Byte che contiene i dati di output restituiti dall'operazione.
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com