Condividi tramite


Windows Sockets: sfondo

Questo articolo illustra la natura e lo scopo di Windows Sockets. L'articolo include anche:

La specifica Windows Sockets definisce un'interfaccia di programmazione di rete compatibile con binaria per Microsoft Windows. Windows Sockets si basa sull'implementazione dei socket UNIX nella Berkeley Software Distribution (BSD, versione 4.3) della University of California a Berkeley. La specifica include sia routine socket di tipo BSD che estensioni specifiche di Windows. L'uso di Windows Sockets consente all'applicazione di comunicare tra qualsiasi rete conforme all'API Windows Sockets. In Win32 Windows Sockets offre thread safety.

Molti fornitori di software di rete supportano Windows Socket in protocolli di rete, tra cui Transmission Control Protocol/Internet Protocol (TCP/IP), System (XNS), protocollo DECNet di Digital Equipment Corporation, Scambio di pacchetti Internet/Exchange compresso sequenziato di Novell Corporation (IPX/SPX) e altri. Anche se la specifica corrente di Windows Sockets definisce l'astrazione dei socket per TCP/IP, qualsiasi protocollo di rete può essere conforme a Windows Sockets fornendo la propria versione della libreria a collegamento dinamico (DLL) che implementa Windows Sockets. Esempi di applicazioni commerciali scritte con Windows Socket includono server X Windows, emulatori di terminale e sistemi di posta elettronica.

Nota

Lo scopo di Windows Sockets è quello di astrarre la rete sottostante in modo da non dover essere informati su tale rete e quindi l'applicazione può essere eseguita su qualsiasi rete che supporta i socket. Di conseguenza, questa documentazione non illustra i dettagli dei protocolli di rete.

Microsoft Foundation Class Library (MFC) supporta la programmazione con l'API Windows Sockets fornendo due classi. Una di queste classi, CSocket, fornisce un livello elevato di astrazione per semplificare la programmazione delle comunicazioni di rete.

La specifica Windows Sockets, Windows Sockets: Un'interfaccia aperta per il calcolo di rete in Microsoft Windows, ora alla versione 1.1, è stata sviluppata come uno standard di rete aperto da un grande gruppo di utenti e società nella community TCP/IP ed è disponibile gratuitamente per l'uso. Il modello di programmazione socket supporta attualmente un "dominio di comunicazione", usando Internet Protocol Suite. La specifica è disponibile in Windows SDK.

Suggerimento

Poiché i socket usano Internet Protocol Suite, sono la route preferita per le applicazioni che supportano le comunicazioni Internet sull'"autostrada delle informazioni".

Definizione di un socket

Un socket è un endpoint di comunicazione, ovvero un oggetto tramite il quale un'applicazione Windows Sockets invia o riceve pacchetti di dati in una rete. Un socket ha un tipo ed è associato a un processo in esecuzione e può avere un nome. Attualmente, i socket scambiano dati solo con altri socket nello stesso "dominio di comunicazione", che usa Internet Protocol Suite.

Entrambi i tipi di socket sono bidirezionali; sono flussi di dati che possono essere comunicati contemporaneamente in entrambe le direzioni (full-duplex).

Sono disponibili due tipi di socket:

  • socket di flusso

    I socket di flusso forniscono un flusso di dati senza limiti di record: un flusso di byte. Flussi di essere recapitati e di essere sequenziati correttamente e non replicati.

  • socket di datagrammi

    I socket di datagrammi supportano un flusso di dati orientato ai record che non è garantito di essere recapitato e potrebbe non essere sequenziato come inviato o nonplicato.

"Sequenziato" indica che i pacchetti vengono recapitati nell'ordine inviato. "Unduplicated" significa che si ottiene un pacchetto specifico una sola volta.

Nota

In alcuni protocolli di rete, ad esempio XNS, i flussi possono essere orientati ai record, come flussi di record anziché flussi di byte. Nel protocollo TCP/IP più comune, tuttavia, i flussi sono flussi di byte. Windows Sockets fornisce un livello di astrazione indipendente dal protocollo sottostante.

Per informazioni su questi tipi e sul tipo di socket da usare in quali situazioni, vedere Windows Sockets: Stream Sockets and Windows Sockets: Datagram Sockets: Datagram Sockets.

Tipo di dati SOCKET

Ogni oggetto socket MFC incapsula un handle in un oggetto Windows Sockets. Il tipo di dati di questo handle è SOCKET. Un handle SOCKET è analogo a HWND per una finestra. Le classi socket MFC forniscono operazioni sull'handle incapsulato.

Il tipo di dati SOCKET è descritto in dettaglio in Windows SDK. Vedere "Tipo di dati socket e valori di errore" in Windows Sockets.

Usi per socket

I socket sono estremamente utili in almeno tre contesti di comunicazione:

  • Modelli client/server.

  • Scenari peer-to-peer, ad esempio applicazioni di messaggistica.

  • Esecuzione di chiamate rpc (Remote Procedure Call) facendo in modo che l'applicazione ricevente interpreti un messaggio come chiamata di funzione.

Suggerimento

Il caso ideale per l'uso dei socket MFC è quando si scrivono entrambe le estremità della comunicazione: usando MFC a entrambe le estremità. Per altre informazioni su questo argomento, tra cui come gestire il caso durante la comunicazione con applicazioni non MFC, vedere Windows Sockets: Byte Ordering.

Per altre informazioni, vedere Windows Sockets Specification: ntohs, ntohl, htons, htonl. Vedere anche gli argomenti seguenti:

Vedi anche

Windows Sockets in MFC