Protokol pro piškvorky

Server zatím bude obsluhovat jen jeden pár hráčů - pro zjednodušení, aby se nemusely řešit herní “místnosti”. Veškerá další spojení nepřijme nebo rovnou ukončí.

Komunikace probíhá přes TCP, standardní port stanovme třeba na 11555.

Postup připojení

Klient se připojí k serveru a zašle paket, kterým oznamuje své jméno hráče. Následně bude čekat, dokud neobdrží jméno protistrany - to může trvat dlouho, neboť protistrana v tuto dobu ještě sama nemusí být připojena. V tomto paketu bude zároveň informace o tom, zda je či není hráč aktuálně na tahu.

Následně začne samotná hra a klient pošle serveru svůj tah, server odešle zpět informaci, zda je tah v pořádku. Následně čeká na informaci o tahu protistrany.

Během hry mohou zároveň přicházet nebo odcházet informace o textu napsaném do chatu.

Struktura datového paketu

Text s ukončením '\n'.

Pozdrav jménem při připojení

Klient pošle v payloadu text “myname:XXXX”, kde XXXX je jméno místního hráče. Server odpoví paketem s payloadem “pname:Y:XXXX”, kde XXXX je jméno protistrany. Pokud je v Y hodnota jedna, tento hráč je právě na tahu a server čeká na jeho rozhodnutí.

Informace o tahu

Klient pošle payload “move:XX,YY”, kde XX a YY jsou souřadnice tahu. Pokud server zašle payload “pmove:XX,YY”, jde o tah protihráče. Server reaguje na zaslání tahu odpovědí “moveok” nebo “moveerr”.

Pokud přijde od serveru zpráva “gameend:” + přiznak “1” znamená výhru této strany a příznak “0” znamená prohru.

Zprávy chatu

Klient pošle payload “msg:TEXT”, přijetí takového payloadu od serveru znamená zprávu od protistrany.

Ukončení spojení

Klient pošle na ukončenie payload “exit”. Po odoslaní a prijatí payloadu “exit” je spojenie okamžite ukončené.

Poznámky ke spojení

Pokud libovolná strana ukončí spojení k serveru, server ukončí spojení s druhou stranou. Po konci hry (gameend) spolu mohou protistrany do uzavření spojení volně chatovat. Není však možné dělat žádné tahy.

 
protokol_tcp_ip.txt · Last modified: 2010/04/08 19:52 by netocada
 
Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki