Esempio Socket Performance Technology
Aggiornamento: novembre 2007
In questo esempio viene illustrato come sfruttare i miglioramenti apportati alla classe System.Net.Sockets.Socket per compilare un'applicazione server che utilizza I/O sulla rete asincrona per ottenere le massime prestazioni.
Per informazioni sull'utilizzo degli esempi, vedere i seguenti argomenti:
Per generare l'esempio utilizzando il prompt dei comandi
Aprire una finestra del prompt dei comandi, quindi spostarsi nella sottodirectory CS della directory AsyncSocketServer. Per informazioni sulle impostazioni necessarie e sul prompt dei comandi dell'SDK, vedere Procedura: definire impostazioni di esempio.
Digitare msbuild AsyncSocketServer.sln dalla riga di comando. Questo comando compilerà entrambe le applicazioni AsyncSocketServer e AsyncSocketClient.
Per generare l'esempio utilizzando Visual Studio
Aprire Esplora risorse, quindi spostarsi nella sottodirectory CS della directory AsyncSocketServer.
Fare doppio clic sull'icona relativa a AsyncSocketServer.sln per aprire il file in Visual Studio.
Scegliere Genera soluzione dal menu Genera.
Le applicazioni AsyncSocketServer e AsyncSocketClient verranno compilate nella directory predefinita \bin o \bin\Debug.
Per eseguire l’esempio
Passare alla directory contenente i nuovi file eseguibili utilizzando la finestra del prompt dei comandi.
Digitare AsyncSocketServer.exe dalla riga di comando con gli argomenti appropriati per eseguire l'applicazione AsyncSocketServer.
Digitare AsyncSocketClient.exe dalla riga di comando con gli argomenti appropriati per eseguire l'applicazione AsyncSocketClient per il test dell'applicazione AsyncSocketServer.
Requisiti
Questo esempio richiede .NET Framework versione 3.5, 3.0 SP1 o 2.0 SP1.
Dimostrazione
È stata aggiunta una serie di nuove classi come parte di un insieme di miglioramenti apportati alla classe System.Net.Sockets.Socket che fornisce un modello asincrono alternativo utilizzabile dalle applicazioni socket specializzate a elevate prestazioni. Questi miglioramenti sono stati progettati in modo specifico per le applicazioni server di rete che richiedono prestazioni elevate. Un'applicazione può utilizzare il modello asincrono migliorato in modo esclusivo o solo in aree mirate dell'applicazione, ad esempio quando si ricevono grandi quantità di dati.
Nell'esempio AsyncSocketServer viene dimostrato come utilizzare questi nuovi metodi sulla classe System.Net.Sockets.Socket implementando un echo Server. Il server restituisce tutti i dati letti da un client al client stesso. L'echo Server implementato in questo esempio gestisce simultaneamente più client, fino al numero massimo specificato come argomento della riga di comando, ed evidenzia alcuni dei principali elementi dei metodi socket asincroni basati su eventi. Nell'esempio AsyncSocketServer viene illustrata la creazione di un pool di buffer di dati riutilizzabili e oggetti del contesto System.Net.Sockets.SocketAsyncEventArgs come metodo per aumentare le prestazioni del server.
L'esempio AsyncSocketClient è una semplice applicazione client da utilizzare per il test dell'applicazione di esempio AsyncSocketServer. Nell'esempio AsyncSocketClient non vengono utilizzati i nuovi miglioramenti della classe System.Net.Sockets.Socket.
L'applicazione AsyncSocketServer richiede quattro parametri della riga di comando.
AsyncSocketServer.exe <numConnections> <receiveSize > <addressFamily> <localPortNum>
Di seguito sono elencati i parametri:
numConnections - Numero massimo di connessioni che il server accetterà simultaneamente.
receiveSize - Dimensione del buffer, espressa in byte, utilizzata dal server per ogni operazione di ricezione.
addressFamily - Famiglia di indirizzi del socket che il server utilizzerà per l'ascolto delle connessioni in ingresso. I valori supportati sono ipv4 e ipv6.
localPortNum - Porta locale a cui verrà associato il server.
Di seguito è riportato un esempio di utilizzo per consentire 500 connessioni su IPv4 con una dimensione del buffer di 1024 byte per ogni operazione di ricezione e impostare l'ascolto sulla porta 8000:
AsyncSocketServer.exe 500 1024 ipv4 8000
L'applicazione AsyncSocketClient richiede due parametri della riga di comando.
AsyncSocketClient.exe <destIPAddress> <destPortNum>
Di seguito sono elencati i parametri:
destIpaddress - Indirizzo IP di destinazione di AsyncSocketServer a cui connettersi.
destPortNum - Numero della porta di destinazione di AsyncSocketServer.
Vedere anche
Riferimenti
System.Net.Sockets.SendPacketsElement