Dela via


Windows Sockets: Bakgrund

Den här artikeln beskriver arten och syftet med Windows Sockets. Artikeln innehåller också:

Windows Sockets-specifikationen definierar ett binärkompatibelt nätverksprogrammeringsgränssnitt för Microsoft Windows. Windows Sockets baseras på UNIX-socketarnas implementering i Berkeley Software Distribution (BSD, version 4.3) från University of California i Berkeley. Specifikationen innehåller både socketrutiner i BSD-stil och tillägg som är specifika för Windows. Med Hjälp av Windows Sockets kan ditt program kommunicera i alla nätverk som överensstämmer med Windows Sockets-API:et. På Win32 tillhandahåller Windows Sockets trådsäkerhet.

Många leverantörer av nätverksprogramvara stöder Windows Sockets under nätverksprotokoll, inklusive TCP/IP (Transmission Control Protocol/Internet Protocol), Xerox Network System (XNS), Digital Equipment Corporations DECNet-protokoll, Novell Corporations Internet Packet Exchange/Sequenced Packed Exchange (IPX/SPX) och andra. Även om den nuvarande Windows Sockets-specifikationen definierar sockets-abstraktionen för TCP/IP, kan alla nätverksprotokoll följa Windows Sockets genom att tillhandahålla en egen version av DLL-biblioteket (Dynamic Link Library) som implementerar Windows Sockets. Exempel på kommersiella program som skrivits med Windows Sockets är X Windows-servrar, terminalemulatorer och elektroniska e-postsystem.

Anmärkning

Syftet med Windows Sockets är att abstrahera bort det underliggande nätverket så att du inte behöver vara kunnig om nätverket och så att ditt program kan köras på alla nätverk som stöder socketar. I den här dokumentationen diskuteras därför inte information om nätverksprotokoll.

Microsoft Foundation Class Library (MFC) stöder programmering med Windows Sockets API genom att tillhandahålla två klasser. En av dessa klasser, CSocket, ger en hög abstraktionsnivå för att förenkla programmeringen av nätverkskommunikation.

Windows Sockets-specifikationen, Windows Sockets: Ett öppet gränssnitt för nätverksberäkning under Microsoft Windows, nu i version 1.1, utvecklades som en öppen nätverksstandard av en stor grupp individer och företag i TCP/IP-communityn och är fritt tillgänglig för användning. Sockets-programmeringsmodellen stöder för närvarande en "kommunikationsdomän" med hjälp av Internet Protocol Suite. Specifikationen är tillgänglig i Windows SDK.

Tips/Råd

Eftersom sockets använder Internet Protocol Suite är de den föredragna vägen för program som stöder Internetkommunikation på "informationsvägen".

Definition av en socket

En socket är en kommunikationsslutpunkt – ett objekt genom vilket ett Windows Sockets-program skickar eller tar emot datapaket i ett nätverk. En socket har en typ och är associerad med en process som körs, och den kan ha ett namn. För närvarande utbyter sockets vanligtvis endast data med andra socketar i samma "kommunikationsdomän", som använder Internet Protocol Suite.

Båda typerna av socketar är dubbelriktade. de är dataflöden som kan kommuniceras i båda riktningarna samtidigt (full duplex).

Det finns två typer av socketar:

  • Strömuttag

    Stream Sockets tillhandahåller ett dataflöde utan postgränser: en ström med byte. Strömmar kommer garanterat att levereras och vara korrekt sekvenserade och icke-duplicerade.

  • Datagram-socketar

    Datagramuttag stöder ett rekordorienterat dataflöde som inte garanterat levereras, kanske inte sekvenseras som skickat och kan bli duplicerat.

"Sekvenserad" innebär att paket levereras i den ordning som skickas. "Unduplicated" innebär att du bara får ett visst paket en gång.

Anmärkning

Under vissa nätverksprotokoll, till exempel XNS, kan strömmar vara postorienterade, som strömmar av poster i stället för strömmar av byte. Enligt det vanligare TCP/IP-protokollet är dock strömmar byteströmmar. Windows Sockets ger en abstraktionsnivå som är oberoende av det underliggande protokollet.

Information om dessa typer och vilken typ av socket som ska användas i vilka situationer finns i Windows Sockets: Stream Sockets och Windows Sockets: Datagram Sockets.

SOCKET-datatypen

Varje MFC-socketobjekt kapslar in ett handtag till ett Windows Sockets-objekt. Datatypen för det här handtaget är SOCKET. Ett SOCKET-handtag motsvarar HWND för ett fönster. MFC-socketklasser tillhandahåller operationer på det inkapslade handtaget.

SOCKET-datatypen beskrivs i detalj i Windows SDK. Se "Socket-datatyp och felvärden" under Windows Sockets.

Användningsområden för Sockets

Sockets är mycket användbara i minst tre kommunikationskontexter:

  • Klient-/servermodeller.

  • Peer-to-peer-scenarier, till exempel meddelandeprogram.

  • Göra fjärrproceduranrop (RPC) genom att låta det mottagande programmet tolka ett meddelande som ett funktionsanrop.

Tips/Råd

Det idealiska fallet för att använda MFC-socketer är när du skriver båda ändarna av kommunikationen och använder MFC i båda ändar. Mer information om det här avsnittet, inklusive hur du hanterar ärendet när du kommunicerar med icke-MFC-program, finns i Windows Sockets: Byte Ordering.

Mer information finns i Windows Sockets Specification: ntohs, ntohl, htons, htonl. Se även följande avsnitt:

Se även

Windows Sockets i MFC