Windows-socketek: Háttér

Megjegyzés:

A Microsoft Foundation Classes (MFC) könyvtár továbbra is támogatott. A továbbiakban azonban nem adunk hozzá funkciókat, és nem frissítjük a dokumentációt.

Ez a cikk a Windows Sockets természetét és célját ismerteti. A cikk a következőket is tartalmazza:

A Windows Sockets specifikációja binárisan kompatibilis hálózati programozási felületet határoz meg a Microsoft Windowshoz. A Windows-szoftvercsatornák a Berkeley Software Distribution (BSD, release 4.3) UNIX-szoftvercsatornáinak megvalósításán alapulnak a Berkeley-i Kaliforniai Egyetemtől. A specifikáció tartalmazza mind a BSD-stílusú socket rutinokat, mind a Windowsra jellemző kiterjesztéseket. A Windows Sockets lehetővé teszi az alkalmazás számára, hogy a Windows Sockets API-nak megfelelő hálózaton keresztül kommunikáljon. Win32 rendszeren a Windows-szoftvercsatornák biztosítják a szálbiztonságot.

Számos hálózati szoftvergyártó támogatja a Windows-szoftvercsatornákat olyan hálózati protokollok alatt, mint a Transmission Control Protocol/Internet Protocol (TCP/IP), a Xerox Network System (XNS), a Digital Equipment Corporation DECNet protokollja, a Novell Corporation internetes csomagcseréje/szekvenciális csomagolt exchangeje (IPX/SPX) és mások. Bár a jelenlegi Windows Sockets-specifikáció határozza meg a TCP/IP szoftvercsatornák absztrakcióját, minden hálózati protokoll megfelelhet a Windows Socketsnek a Windows Socketst implementáló dinamikus csatolású kódtár (DLL) saját verziójának megadásával. A Windows-szoftvercsatornákkal írt kereskedelmi alkalmazások közé tartoznak például az X Windows-kiszolgálók, a terminálemulátorok és az elektronikus levelezőrendszerek.

Megjegyzés:

A Windows Sockets célja, hogy elrejtse a mögöttes hálózat bonyolultságát, így Önnek nem kell ismernie a hálózatot, és az alkalmazás bármely olyan hálózaton fusson, amely támogatja a socketeket. Ezért ez a dokumentáció nem tárgyalja a hálózati protokollok részleteit.

A Microsoft Foundation Osztálytár (MFC) két osztály biztosításával támogatja a Windows Sockets API-val való programozást. Ezen osztályok CSocketegyike magas szintű absztrakciót biztosít a hálózati kommunikáció programozásának egyszerűsítése érdekében.

A Windows Sockets specifikációja, a Windows Sockets: Open Interface for Network Computing Under Microsoft Windows, amely jelenleg 1.1-es verziójú, nyílt hálózati szabványként lett kifejlesztve a TCP/IP-közösségben lévő egyének és vállalatok nagy csoportja által, és szabadon használható. A soket programozási modell jelenleg egy "kommunikációs tartományt" támogat az Internetes Protokollkészlet használatával. A specifikáció a Windows SDK-ban érhető el.

Jótanács

Mivel a socketek az Internet Protocol Suite-ot használják, ezek az előnyben részesített útvonalak az internetes kommunikáció számára az "információs autópályán".

Szoftvercsatorna definíciója

A socket egy kommunikációs végpont – olyan objektum, amelyen keresztül egy Windows Sockets-alkalmazás adatcsomagokat küld vagy fogad egy hálózaton keresztül. A socketek típusának egy futó folyamathoz társítva van, és esetleg neve is van. Jelenleg a socketek általában csak más socketekkel cserélnek adatot ugyanabban a "kommunikációs környezetben", amely az internetes protokollkészletet használja.

Mindkét típusú foglalat kétirányú; ezek olyan adatfolyamok, amelyek egyszerre mindkét irányban kommunikálhatók (full-duplex).

Két aljzattípus érhető el:

  • Stream-szoftvercsatornák

    A streamcsatornák rekordhatárok nélküli adatfolyamot biztosítanak: bájtos adatfolyamot. A streamek garantáltan kézbesítve lesznek, és megfelelően vannak sorrendben és nem duplikálva.

  • Datagram-csatlakozók

    A datagram socketek olyan rekordorientált adatfolyamot támogatnak, amelynél nem garantált a kézbesítés, és amely nem feltétlenül a küldési sorrendben érkezik vagy nem lesz duplikálva.

A "szekvenciált" azt jelenti, hogy a csomagok kézbesítése az elküldött sorrendben történik. A "nem duplikált" azt jelenti, hogy egy adott csomagot csak egyszer kap meg.

Megjegyzés:

Egyes hálózati protokollok, például az XNS esetén a streamek rekordorientáltak lehetnek, és nem bájtos streamekként, hanem rekordstreamekként. A gyakoribb TCP/IP protokoll alatt azonban a streamek bájtstreamek. A Windows Sockets az alapul szolgáló protokolltól független absztrakciós szintet biztosít.

Az ilyen típusokról és a különböző helyzetekben használandó csatlakozókról további információ a következő címeken található: Windows Sockets: Stream Sockets és Windows Sockets: Datagram Sockets.

A SOCKET-adattípus

Minden MFC-aljzat objektum egy Windows Sockets objektum fogantyúját ágyazza be. Ennek a leírónak az adattípusa a SOCKET. A SOCKET fogantyúja hasonló az ablak fogantyújához. Az MFC socket osztályai műveleteket végeznek a beágyazott kezelőn.

A SOCKET adattípust a Windows SDK részletesen ismerteti. Lásd: "Szoftvercsatorna-adattípus és hibaértékek" a Windows-szoftvercsatornák alatt.

Foglalatok használata

A foglalatok legalább három kommunikációs környezetben rendkívül hasznosak:

  • Ügyfél-/kiszolgálómodellek.

  • Társközi forgatókönyvek, például üzenetkezelési alkalmazások.

  • Távoli eljáráshívások (RPC) kezdeményezése úgy, hogy a fogadó alkalmazás függvényhívásként értelmez egy üzenetet.

Jótanács

Az MFC szokettípusa ideálisan akkor használható, ha Ön írja a kommunikáció mindkét oldalát: mindkét oldalon MFC-t használva. A témakörrel kapcsolatos további információkért, beleértve az eset kezelését a nem MFC-alkalmazásokkal folytatott kommunikáció során, olvassa el a Windows Sockets: Byte Ordering című témakört.

További információ: Windows Sockets Specification: ntohs, ntohl, htons, htonl. Tekintse meg a következő témaköröket is:

Lásd még

Windows-szoftvercsatornák az MFC-ben