Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel wordt de aard en het doel van Windows Sockets uitgelegd. Het artikel bevat ook:
Hierin worden toepassingen voor sockets beschreven.
De Specificatie van Windows Sockets definieert een binaire netwerkprogrammeringsinterface voor Microsoft Windows. Windows Sockets zijn gebaseerd op de IMPLEMENTATIE van UNIX-sockets in de Berkeley Software Distribution (BSD, release 4.3) van de Universiteit van Californië in Berkeley. De specificatie omvat zowel BSD-stijl socket routines als extensies specifiek voor Windows. Met Behulp van Windows Sockets kan uw toepassing communiceren via elk netwerk dat voldoet aan de Windows Sockets-API. Op Win32 bieden Windows Sockets de veiligheid van threads.
Veel netwerksoftwareleveranciers ondersteunen Windows Sockets onder netwerkprotocollen, waaronder Transmission Control Protocol/Internet Protocol (TCP/IP), Xerox Network System (XNS), het DECNet-protocol van Digital Equipment Corporation, het Internet Packet Exchange/Sequenced Packed Exchange (IPX/SPX) van Novell Corporation en andere. Hoewel de huidige Specificatie van Windows Sockets de socketsabstractie voor TCP/IP definieert, kan elk netwerkprotocol voldoen aan Windows Sockets door een eigen versie van de DLL (Dynamic Link Library) te leveren die Windows Sockets implementeert. Voorbeelden van commerciële toepassingen die zijn geschreven met Windows Sockets zijn X Windows-servers, terminalemulators en elektronische e-mailsystemen.
Opmerking
Het doel van Windows Sockets is om het onderliggende netwerk te abstraheren, zodat u niet op de hoogte hoeft te zijn van dat netwerk en zodat uw toepassing kan worden uitgevoerd op elk netwerk dat sockets ondersteunt. Daarom wordt in deze documentatie niet ingegaan op de details van netwerkprotocollen.
De Microsoft Foundation Class Library (MFC) ondersteunt programmeren met de Windows Sockets-API door twee klassen op te geven. Een van deze klassen, CSocketbiedt een hoog abstractieniveau om uw netwerkcommunicatieprogrammering te vereenvoudigen.
De Specificatie van Windows Sockets, Windows Sockets: Een open interface voor netwerkcomputing onder Microsoft Windows, nu op versie 1.1, is ontwikkeld als een open netwerkstandaard door een grote groep personen en bedrijven in de TCP/IP-community en is vrij beschikbaar voor gebruik. Het sockets-programmeermodel ondersteunt momenteel één communicatiedomein, met behulp van de Internet Protocol Suite. De specificatie is beschikbaar in de Windows SDK.
Aanbeveling
Omdat sockets de Internet Protocol Suite gebruiken, zijn ze de voorkeursroute voor toepassingen die internetcommunicatie op de "informatieweg" ondersteunen.
Definitie van een socket
Een socket is een communicatie-eindpunt: een object waarmee een Windows Sockets-toepassing pakketten met gegevens via een netwerk verzendt of ontvangt. Een socket heeft een type en is gekoppeld aan een actief proces en heeft mogelijk een naam. Op dit moment wisselen sockets doorgaans alleen gegevens uit met andere sockets in hetzelfde 'communicatiedomein', dat gebruikmaakt van internetprotocolsuite.
Beide soorten sockets zijn bidirectioneel; ze zijn gegevensstromen die tegelijkertijd in beide richtingen kunnen worden gecommuniceerd (full-duplex).
Er zijn twee sockettypen beschikbaar:
Stroomsockets
Stream sockets bieden een gegevensstroom zonder recordgrenzen: een stroom van bytes. Streams worden gegarandeerd geleverd en correct gesequentieerd en ongedupliceerd.
Datagram-sockets
Datagram sockets ondersteunen een recordgeoriënteerde gegevensstroom die niet gegarandeerd wordt geleverd en die mogelijk niet als verzonden of niet-ontdubbeld wordt gesequentieerd.
'Gesequentieerd' betekent dat pakketten in de verzonden volgorde worden geleverd. 'Niet-ontdubbeld' betekent dat u slechts één keer een bepaald pakket krijgt.
Opmerking
Onder sommige netwerkprotocollen, zoals XNS, kunnen streams worden vastgelegd als recordsstromen in plaats van streams van bytes. Onder het meer gangbare TCP/IP-protocol zijn streams echter bytestreams. Windows Sockets biedt een abstractieniveau onafhankelijk van het onderliggende protocol.
Zie Windows Sockets: Stream Sockets en Windows Sockets: Datagram Sockets voor meer informatie over deze typen en welk type socket moet worden gebruikt.
Het gegevenstype SOCKET
Elk MFC socket-object bevat een ingang voor een Windows Sockets-object. Het gegevenstype van deze ingang is SOCKET. Een SOCKET-handle is vergelijkbaar met de HWND voor een venster. MFC-socketklassen bieden bewerkingen op de ingekapselde handle.
Het gegevenstype SOCKET wordt gedetailleerd beschreven in de Windows SDK. Zie 'Socketgegevenstype en foutwaarden' onder Windows Sockets.
Toepassingen voor sockets
Sockets zijn zeer nuttig in ten minste drie communicatiecontexten:
Client-/servermodellen.
Peer-to-peer-scenario's, zoals berichtenapps.
Het maken van externe procedure-aanroepen (RPC) door de ontvangende toepassing een bericht te laten interpreteren als een functie-aanroep.
Aanbeveling
Het ideale geval voor het gebruik van MFC-sockets is als u beide uiteinden van de communicatie schrijft: waarbij u MFC aan beide uiteinden gebruikt. Zie Windows Sockets: Byte Ordering voor meer informatie over dit onderwerp, waaronder het beheren van de case wanneer u communiceert met niet-MFC-toepassingen.
Zie Windows Sockets Specification: ntohs, ntohl, htons, htonl voor meer informatie. Zie ook de volgende onderwerpen: