hálózati kódot

Írásban megfelelő és helyes hálózati kód - a feladat meglehetősen egyszerű. Csak akkor kell felfrissít egy kicsit, és „próbálja» Winsock. De az is szükséges, hogy írjon és gyorsabb kódot, vagy élvezhetik a játék a hálózaton (vagy inkább a modem) nem sok. Elég csak felidézni az eredeti Quake. Ha valaki próbált játszani ezt a játékot a modem, azt hiszem, több mint egy tucat, nem irodalmi kifejezés otmochite :).

Ebben az esetben arra utal, hogy a kliens-szerver kapcsolatot, ha a kliens elküldi a szervernek adatokat a felhasználó intézkedéseket, és a szerver, kezeli az összes ügyfél, akkor elküldi az adatokat az állam a játék.

Ebben a folyamatban a kommunikáció megvannak a maga előnyei és hátrányai.

Előnyök - nehézség csalás, de az ügyfél nem feltétlenül egy divatos számítógép konfiguráció, mert csak akkor szükséges, hogy a szerver adatait, hogy megváltozott a játék világában, és mi képviseli a képernyőn. Ezen kívül nincs külön szinkronizálás, hogy az ügyfelek azonos állam a játék világ (például Doom nem épült egy kliens-szerver technológia minden számítógép kiszámítja nagyon különböző játék lehetőségek alapján egy véletlen szám generátor és már mindent szinkronizálni azt).

Másrészt, van egy nagyon jelentős hátrányokkal jár, amelyek szinte láthatatlan a játék egy helyi hálózaton, de nagyon sok a játék jelenik meg a modemet. A fő hátránya - Ping, nem éppen önmagát;), és a magas érték. Ping - az időtartam, amely alatt a csomagot az ügyfél eléri a szerver, plusz a szerver válaszidő, valamint az az időtartam egy csomagot a szerver a kliens. A LAN az értéke jellemzően 5 és 30 msec. Amikor a játék van a modem, ping érték lehet 50 (na jó, ez csak ideális körülmények között) a végtelenig. Feltételezve, hogy a modem kommunikáció elfogadható, Ping érték csak attól függ „krivosti” hálózati kód és az állam a játék világ (változó különböző paramétereket a játék elemeit).

Így az optimalizálás a hálózati kódot, hanem optimális mérete a továbbított adatok - egy nagyon komoly és összetett probléma.

De először, persze, nézzük meg, hogyan működik mindez, majd lépni a optimalizálás.

Tehát, mi a kapcsolat révén Winsock (akkor természetesen használhatja DirectPlay, de a kevésbé van közvetítők, annál gyorsabban fog működni, nem?), Az UDP protokoll (TCP kapcsolat ebben az esetben, akkor csak a helyi hálózaton mert az egyik előnye a TCP - 100% packet szállítás - ebben az esetben válik egy hatalmas hátrány, mert ha a csomag, akkor nem kell szállítani sikeresen elküldve ismét az állam a játék megváltozott!).

Példák vannak előállítva, nyílt forráskódú Quake2. (Mellesleg a téma, azt akarom mondani, egy személyes vélemény erről a kód - a kód van írva „helyes”, és elég optimálisan, bug-mentes, és általában könnyen olvasható). Ez is jó lenne, ha rendszeres időközönként megvizsgálja a dokumentációt winsock. Célszerű először olvassa el az elméletet, majd tekintse meg a gyakorlatban.

Miután sikeresen elvégezte a fenti lépéseket, a könyvtár winsock kész szolgálni you :).

Most írjuk az inicializálási eljárást aljzatok.

Aljzatok nem lehet több, mint 2. Az egyik a szerver, a második - az ügyfél számára (mert nem kell egy dedikált szerver).

Tudod, hogy a két változó, server_socket és client_socket, és ez lehet, ahogy az Quake2, hozzon létre egy sor 2-elemek és a header file leírni a számlálóra:

És alapvetően leírják egy sor fájl

static int ip_sockets [] =; // IP szerver ügyfél socket

Írjunk egy általános módszert inicializáció, amelyet meg kell hívni az első kliens vagy a szerver indítása.

A másik módszer egy specifikusabb módszerrel inicializáló socket IP protokollt. Azt is, hogy az inicializálás az IPX protokollt.

Nos, írunk egy eljárást elindítani a hálózatot. Továbbra is egy kicsit - írja módszereket küldeni / fogadni csomagokat és módszerekkel dolgozó helyi kliens.

Ezek a módszerek megkövetelik leírását néhány struktúrák.

A módszer a küldés a csomag:

Eljárás vétel a csomag:

Osztály Leírás puffer:

Ez az osztály célja a kényelmesebb munkavégzés egy sor különböző típusú adatokat.

Továbbra is csak foglalkozni az adatátviteli eljárás között a helyi kliens és a szerver között.

Azt, hogy a szimuláció a winsock. A winsock tudjuk küldeni több csomag egy másik számítógépet, amíg azt veszi őket, hogy van, szükség van egyfajta valamennyi csomag. A Quake2 megvalósították egyszerű és eredeti módon - egy „végtelenített” tömb. Megteheti ezt a STL + puffer osztályban. De ahogy már mondtam, Quake2 kód van írva egészen optimális, sőt, nem kell technikák puffer osztály, szükségünk van egy egyszerű tömböt, és változó méretű, így például használja az eredeti kódot.

És most nagyon módszerek:

Ez volt az első része a cikket. Leírták alacsony szintű vezető a hálózathoz. Közvetlenül ez szinte soha nem használt motort. A második rész leírja az osztály, amely közvetlenül a motor üzemeltetéséhez. lehetőség 100% -os szállítási „fontos” adatok (megbízható adat) - Van néhány érdekes dolgot, ami a legfontosabb, amely valósul meg. De ez lesz később.

Kapcsolódó cikkek