5. fejezet - Munka az ügyfél
Együttműködik az ügyféllel
Az ügyfél viszont nem olyan bonyolult, mint a szerver. Ő tipikusan az csak két üzenet az adatok fogadása és a kapcsolat megszakítását, és beállítja és ellenőrzi egyetlen kapcsolat (a szerver).
A fő kiegészítés, hogy a kliens alkalmazás kell állítani a paramétereket a játékos a fő egységet lehet kapni őket. Telepítési információ a játékos, hogy töltse ki a megfelelő adatokat DPN_PLAYER_INFO szerkezetét, majd hívja IDirectPlay8Client :: SetClientInfo funkciót.
Érdekli csak néhány mezőt DPN_PLAYER_INFO felépítése - különösen pwszName. Unicode karakterlánc, amely a nevét a játékos szeretne használni. Meg kell tisztítani a szerkezet, meg a dwSize. értéket rendelni a területen dwInfoFlags DPNINFO_NAME | DPNINFO_DATA és állítsa be a játékos nevét.
Itt látható a prototípus IDirectPlay8Client :: SetClientInfo funkciók:
Mint már említettük, ugyanazt a kérelmet GUID a kliens és a szerver, így fel tudják ismerni egymást. Ennek elmulasztása - az egyik fő oka, hogy a hálózati alkalmazások nem tud csatlakozni, így biztos, hogy az alkalmazások azonos GUID.
Most az ügyfél hajlandó kapcsolatot létesíteni, de most minden egy kicsit más. Ez használ a függvény IDirectPlay8Client :: Csatlakozás. és ez a prototípusa óriási hazugság:
Azt mondta, hogy a funkció csatlakoztatása hatalmas, de a legtöbb érvek már leírt az előző részben „Munka a szerverrel.” A legszembetűnőbb különbség - hozzátéve pDeviceInfo érv. a tárgya IDirectPlay8Address. amely tartalmaz egy helyi eszköz hogy használják, hogy a kapcsolat létrehozásához.
Ha aszinkron kapcsolat, ellenőrzés azonnal visszatér, és meg kell várni, DPN_MSGID_CONNECT_COMPLETE üzenetét. jelentések sikeres kapcsolatot a szerverrel. A szinkron kapcsolat menedzsment a függvény csak a kapcsolatot, vagy ha hiba történik.
Most nézzük az első TCP / IP eszköz van a rendszerben, és adja meg, hogy ezt a funkciót, egy szinkron kapcsolatot módszer:
Üzenetek küldésére és fogadására
Üzenetek fogadása a kliens oldalon azonos felkészülésüket a szerver oldalon, úgy, hogy érdekli az üzenet függvényt. Ami a szállítást, akkor a kilépési munkát IDirectPlay8Client :: küldése:
Ön használta ezeket az érveket, lásd „küldése Server Message”, így nem írom le őket újra. Ehelyett, adok egy példát tervezése játék adatcsomagot küldött a szerver a kliens révén objektum elküldése funkciót.
Első Player ID
Miután a kapcsolat a kiszolgáló között, eljön az idő, amikor az ügyfél kell elérnie annak azonosítója (ez a helyzet meg fog jelenni a 15. fejezet, ahol az ügyfél nyomon követi a játékos által ID). Ahhoz, hogy a játékos ügyfél azonosítót kell elemezni az üzenet létre kapcsolatot (DPN_MSGID_CONNECT_COMPLETE). Ez az üzenet a következő adatokat használja struktúra fontos információkat tartalmaz az ügyfél kapcsolat és a szerver:
Most érdekli csak egy darab információ - dpnidLocal területen. amely magában foglalja a helyi játékos azonosítót. Most, bár a többi információ és hasznos, nem kell semmit csinálni vele. Tény, hogy hiányzik ez az egész, és összpontosítani dpnidLocal.
A 15. fejezet látni fogja, hogy mikor csatlakozik a szerverhez a kliens alkalmazás tárolja az értéket dpnidLocal. használni, hogy hívják magukat. Ennek oka az, utalva magát a tényt, hogy az ügyfél adatait tárolja minden csatlakoztatott kliens - emlékszem, azt mondta, hogy a játékos személyazonosságát az egyetlen igazi módja annak, hogy megkülönböztessük az egyik ügyfél a másiktól.
Most tudásbázis töltse ki még egy darab információ, és hogyan kell befejezni a megkezdett ülésén.
Befejezés ügyfélmunkamenethez
Amikor eljön az ideje, hogy húzza az ügyfél a munkamenet, akkor azt explicit módon értesíti DirectPlay úgy, hogy a szükséges intézkedéseket megtették le. Feldolgozta a kliens bontja a munkamenet funkció IDirectPlay8Client :: Close: