Introduzione a Winsock

Questa sezione è una guida dettagliata per iniziare a usare la programmazione di Windows Sockets. È progettato per fornire una comprensione delle funzioni e delle strutture dei dati Winsock di base e del modo in cui interagiscono.

L'applicazione client e server usata in questo argomento per l'illustrazione è un client e un server molto di base. Gli esempi di codice più avanzati sono inclusi negli esempi inclusi in Microsoft Windows Software Development Kit (SDK).

I primi passaggi sono gli stessi per le applicazioni client e server.

Gli articoli seguenti descrivono i passaggi rimanenti per la creazione di un'applicazione client Winsock.

Gli articoli seguenti descrivono i passaggi rimanenti per la creazione di un'applicazione server Winsock.

Codice sorgente completo per questi esempi di base.

App di esempio Winsock avanzate

In GitHub sono disponibili diverse app di esempio client e server Winsock più avanzate. Sono elencati qui per ottenere prestazioni più elevate e inferiori e sono disponibili nelle directory seguenti:

  • Iocp

    La cartella contiene tre programmi di esempio che usano porte di completamento di I/O. I programmi includono: un server Winsock, , iocpserverche usa la funzione WSAAccept ; un server Winsock, iocpserverex, che usa la funzione AcceptEx e un semplice client Winsock multithreaded, iocpclientusato per testare uno di questi server.

    I programmi server supportano più client che si connettono tramite TCP/IP e inviano buffer di dati di dimensioni arbitrarie che il server esegue quindi l'eco al client. Per praticità, un semplice programma client, iocpclientè stato sviluppato per connettersi e inviare continuamente dati al server per stressarlo usando più thread. I server Winsock che usano le porte di completamento di I/O offrono le prestazioni più elevate.

  • Sovrapposizione

    Questa cartella contiene un programma server di esempio che usa operazioni di I/O sovrapposte. Il programma di esempio usa la funzione AcceptEx e l'I/O sovrapposta per gestire in modo efficace più richieste di connessione asincrone dai client. Il server usa la funzione AcceptEx per più connessioni client diverse in un'applicazione Win32 a thread singolo. L'uso di I/O sovrapposto consente una maggiore scalabilità.

  • WSAPoll

    Questa cartella contiene un programma di esempio di base che illustra l'uso della funzione WSAPoll . Il programma client e server combinato non blocca e usa la funzione WSAPoll per determinare quando è possibile inviare o ricevere senza blocco. Questo esempio è per l'illustrazione e non è un server ad alte prestazioni.

  • simple

    Questa cartella contiene tre programmi di esempio di base che illustrano l'uso di più thread da un server. I programmi includono: un semplice server TCP/UDP, simples; un server tcp-only, che usa la funzione select in un'applicazione console Win32 per supportare più richieste client e un programma TCP/UDP client, simplecsimples_ioctl, per testare i server. I server illustrano l'uso di più thread per gestire più richieste client. Questo metodo presenta problemi di scalabilità poiché viene creato un thread separato per ogni richiesta client.

  • Accettare

    Questa cartella contiene un server di esempio di base e un programma client. Il server illustra l'uso di accettare non bloccando usando la funzione select o accettare asincrona usando la funzione WSAAsyncSelect . Questo esempio è per l'illustrazione e non è un server ad alte prestazioni.