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.
- Hálózati socket létrehozása az ügyfél számára
- Csatlakozás foglalathoz
- Adatok küldése és fogadása az ügyfélen
- Az ügyfél leválasztása
Az alábbi cikkek a Winsock-kiszolgálóalkalmazás létrehozásának hátralévő lépéseit ismertetik.
- Hálózati foglalat létrehozása a kiszolgáló számára
- Socket kötése
- Figyelés szoftvercsatornán
- Kapcsolat elfogadása
- Adatok fogadása és küldése a kiszolgálón
- A kiszolgáló leválasztása
Az alapszintű példák teljes forráskódja.
- Winsock-ügyfél- és kiszolgálókódminta futtatása
- Winsock ügyfélkód kitöltése
- Winsock-kiszolgálókód befejezése
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ű,
iocpclient
nevű ü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ó.