C# LanguagePresa asincrona

introduzione

Utilizzando socket asincroni, un server può ascoltare le connessioni in entrata e fare qualche altra logica nel frattempo in contrasto con il socket sincrono quando sono in ascolto bloccano il thread principale e l'applicazione sta diventando non rispondente e si bloccherà fino a quando un client non si connetterà.

Osservazioni

Presa e rete

Come accedere a un server al di fuori della mia rete? Questa è una domanda comune e quando viene posta la domanda è per lo più segnalata come argomento.

Lato server

Sulla rete del tuo server devi portare il tuo router in avanti al tuo server.

Per esempio PC su cui è in esecuzione il server:

IP locale = 192.168.1.115

Il server sta ascoltando la porta 1234.

Inoltra connessioni in entrata sul router Port 1234 a 192.168.1.115

Dalla parte del cliente

L'unica cosa che devi cambiare è l'IP. Non vuoi collegarti al tuo indirizzo di loopback ma all'IP pubblico dalla rete su cui è in esecuzione il tuo server. Questo IP puoi arrivare qui .

 _connectingSocket.Connect(new IPEndPoint(IPAddress.Parse("10.10.10.10"), 1234));

Quindi ora crei una richiesta su questo endpoint: 10.10.10.10:1234 se hai fatto la proprietà port forwarding del router il tuo server e client si connetteranno senza alcun problema.

Se vuoi connetterti ad un IP locale non dovrai portforwart cambiare semplicemente l'indirizzo di loopback a 192.168.1.178 o qualcosa del genere.

Invio di dati:

I dati vengono inviati nell'array di byte. Devi mettere i tuoi dati in un array di byte e decomprimerlo dall'altro lato.

Se hai familiarità con il socket puoi anche provare a crittografare il tuo array di byte prima di inviarlo. Ciò impedirà a chiunque di rubare il pacchetto.

Presa asincrona Esempi correlati