/// <summary> /// Z XML znova vytvoří objekt /// </summary> /// <param name="aZprava"></param> /// <returns></returns> public static Zprava Deserializuj(string aZprava) { StringReader sw = new StringReader(aZprava); XmlSerializer ser = new XmlSerializer(typeof(Zprava)); Zprava z = (Zprava)ser.Deserialize(sw); return(z); }
/// <summary> /// Obejkt vloží do XML /// </summary> /// <param name="aZprava"></param> /// <returns></returns> public static string Serializuj(Zprava aZprava) { Utf8StringWriter sw = new Utf8StringWriter(); XmlSerializer ser = new XmlSerializer(typeof(Zprava)); ser.Serialize(sw, aZprava); return(sw.ToString().Replace(System.Environment.NewLine, "")); }
public void PosliZpravu(Zprava aZprava) { XmlSerializer s = new XmlSerializer(typeof(Zprava)); //převede zprávu do XML a odešle odesilac.WriteLine(Serializuj(aZprava)); //po odeslání se vyčistí odesilac.Flush(); }
public void PrijmiZpravu() { while (Pripojeno) { //přijme zprávu v XML string zpravaStr = prijimac.ReadLine(); //vytvoří z XML objekt Zprava z = Deserializuj(zpravaStr); //vybere zpracovávač podle tpu zprávy a zpracuje zprávu ZpracovavacFactory.VratZpracovavac(z, this).ZpracujZpravu(z); } }
public void NovyServer(bool aJeBily) { //nastavý barvu kamenů serveru JeHracBily = aJeBily; KlientOrServer = true; IPHostEntry host = Dns.GetHostEntry("localhost"); IPAddress ip = new IPAddress(host.AddressList.First().GetAddressBytes()); Server = new TcpListener(ip, 2000); //spustí server Server.Start(); bool bezi = true; //nastavý timer a obsluhu ticku timeoutTimer = new System.Windows.Forms.Timer(); timeoutTimer.Interval = 30000; timeoutTimer.Tick += timeoutTimer_Tick; while (bezi) { if (Server.Pending()) { Socket socket = Server.AcceptSocket(); Stream stream = new NetworkStream(socket); prijimac = new StreamReader(stream); odesilac = new StreamWriter(stream); Pripojeno = true; new Thread(PrijmiZpravu).Start(); //odešle zprávu klientovi o jeho barvě Zprava zprava = new Zprava(); zprava.TypZpravy = TypZpravyEnum.ZpracovavacBarva; zprava.Parametry.Add(new ParametrZpravy("Barva", aJeBily.ToString())); PosliZpravu(zprava); //když může hrát spustí se timer který určuje časový limit na tah if (MuzeHrat) { SpustTimer(); } bezi = false; } } }
private void KlientOrServerKlik(MouseEventArgs aE) { VycetTypuKamene kamen = JeHracBily ? VycetTypuKamene.Bily : VycetTypuKamene.Cerny; int kamenInt = JeHracBily ? 2 : 1; if (hraciPole.MoznostPolozeni(aE.Location.X / hraciPole.cellSize, aE.Location.Y / hraciPole.cellSize, kamenInt)) { Zvuk(); hraciPole.hrajeCerny = !hraciPole.hrajeCerny; hraciPole.UlozDoPole(aE.Location.X / hraciPole.cellSize, aE.Location.Y / hraciPole.cellSize, kamen); hraciPole.PrepisKameny(aE.Location.X / hraciPole.cellSize, aE.Location.Y / hraciPole.cellSize, kamenInt); VyvolejUdalost(PoZmeneHracihoPole); Zprava z = new Zprava(); z.TypZpravy = TypZpravyEnum.ZpracovavacNovePoziceKamene; z.Parametry.Add(new ParametrZpravy("X", aE.X.ToString())); z.Parametry.Add(new ParametrZpravy("Y", aE.Y.ToString())); PosliZpravu(z); timeoutTimer.Stop(); } }