Megosztás a következőn keresztül:


Winsock használatának első lépései

Ez a szakasz részletes útmutató a Windows Sockets programozásának első lépéseihez. Úgy tervezték, hogy megismerje az alapvető Winsock-függvényeket és adatstruktúrákat, és hogy hogyan működnek együtt.

Az ebben a témakörben illusztrációként használt ügyfél- és kiszolgálóalkalmazás egy nagyon egyszerű ügyfél- és kiszolgálóalkalmazás. A Microsoft Windows Software Development Kit (SDK) csomagban található minták speciálisabb kódmintákat is tartalmaz.

Az első néhány lépés ugyanaz az ügyfél- és kiszolgálóalkalmazások esetében is.

Az alábbi cikkek a Winsock-ügyfélalkalmazás létrehozásának hátralévő lépéseit ismertetik.

Az alábbi cikkek a Winsock-kiszolgálóalkalmazás létrehozásának hátralévő lépéseit ismertetik.

Az alapszintű példák teljes forráskódja.

Speciális Winsock-mintaalkalmazások

A GitHubon számos fejlettebb Winsock-ügyfél- és kiszolgálóminta-alkalmazás érhető el. Az elemek itt felsorolva megtalálhatók, teljesítmény szerint csökkenő sorrendben, és a következő könyvtárakban találhatók:

  • iocp

    Ez a mappa három mintaprogramot tartalmaz, amelyek I/O-befejezési portokat használnak. A programok a következők: egy Winsock-kiszolgáló, iocpserver, amely a WSAAccept függvényt használja; egy Winsock-kiszolgáló, iocpserverex, amely az AcceptEx függvényt használja; és egy egyszerű, többszálú Winsock-ügyfél, iocpclient, amely ezen kiszolgálók bármelyikének tesztelésére szolgál.

    A kiszolgálói programok támogatják, hogy több ügyfél tcp/IP használatával csatlakozzon, és tetszőleges méretű adatpuffereket küldjön, amelyeket a kiszolgáló ezután visszaküld az ügyfélnek. A kényelem érdekében kifejlesztettek egy egyszerű, iocpclientnevű ügyfélprogramot, amely kapcsolódik a kiszolgálóhoz, és folyamatosan küldi az adatokat, hogy több szál használatával terhelje azt. Az I/O-befejezési portokat használó Winsock-kiszolgálók biztosítják a legnagyobb teljesítményt.

  • átfedés

    Ez a mappa egy átfedésben lévő I/O-t használó kiszolgálói mintaprogramot tartalmaz. A mintaprogram az AcceptEx függvényt és az átfedésben lévő I/O-t használja, hogy hatékonyan kezelje az ügyfelektől érkező több aszinkron kapcsolatkérést. A kiszolgáló az AcceptEx függvénnyel multiplexeli a különböző ügyfélkapcsolatokat egy egyszálas Win32-alkalmazásban. Az átfedésben lévő I/O használata nagyobb méretezhetőséget tesz lehetővé.

  • WSAPoll

    Ez a mappa egy alapszintű mintaprogramot tartalmaz, amely bemutatja a WSAPoll függvény használatát. Az egyesített ügyfél- és kiszolgálóprogram nem blokkoló, és a WSAPoll függvénnyel határozza meg, hogy mikor lehet blokkolás nélkül küldeni vagy fogadni. Ez a minta illusztráció, és nem nagy teljesítményű kiszolgáló.

  • egyszerű

    Ez a mappa három alapvető mintaprogramot tartalmaz, amelyek bemutatják, hogy egy kiszolgáló több szálat használ. A programok a következők: egy egyszerű TCP/UDP-kiszolgáló, simples; csak TCP-kiszolgáló, simples_ioctl, amely a függvényt használja egy Win32-konzolalkalmazásban több ügyfélkérés támogatására; és egy ügyfél TCP/UDP-programja, simplec, a kiszolgálók teszteléséhez. A kiszolgálók bemutatják, hogy több szálat használnak több ügyfélkérés kezelésére. Ez a módszer méretezhetőségi problémákat tapasztal, mivel minden ügyfélkéréshez külön szál jön létre.

  • elfogad

    Ez a mappa egy egyszerű mintakiszolgálót és ügyfélprogramot tartalmaz. A kiszolgáló bemutatja a nem blokkoló elfogadás használatát a kiválasztásával, vagy aszinkron elfogadást a WSAAsyncSelect függvénnyel. Ez a minta illusztráció, és nem nagy teljesítményű kiszolgáló.