Condividi tramite


Introduzione a Winsock

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

L'applicazione client e server usata in questo argomento per 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 in ordine da prestazioni più elevate a inferiori e sono disponibili nelle directory seguenti:

  • iocp

    Tale cartella contiene tre programmi di esempio che usano porte di completamento I/O. I programmi includono: un server Winsock, iocpserver, che usa la funzioneWSAAccept; un server Winsock, iocpserverex, che usa la funzioneAcceptEx; e un semplice client Winsock multithreading, iocpclient, usato 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 restituite dal server 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 porte di completamento 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 funzioneAcceptExe le operazioni di I/O sovrapposte 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 operazioni di I/O sovrapposte consente una maggiore scalabilità.

  • WSAPoll

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

  • semplice

    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 solo TCP, simples_ioctl, che usa la funzione select in un'applicazione console Win32 per supportare più richieste client; e un programma client TCP/UDP, simplec, per il test dei server. I server illustrano l'uso di più thread per gestire più richieste client. Questo metodo presenta problemi di scalabilità perché 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 accetta non bloccante usando la funzione di selezione , o accettazione asincrona usando la funzione WSAAsyncSelect. Questo esempio è illustrato e non è un server ad alte prestazioni.