Exemple #1
0
        private static void Events_DataReceived(object sender, DataReceivedEventArgs e)
        {
            Console.WriteLine($"Dane od clienta: {e.IpPort} -> {Encoding.UTF8.GetString(e.Data)}");

            switch (Encoding.UTF8.GetString(e.Data).Split(':')[0])
            {
            case Messages.Client.Host:
                matches.Add(new Match(e.IpPort));
                Console.WriteLine($"Gracz: {e.IpPort} stworzył nową gre");
                break;

            case Messages.Client.Join:
                matches[0].playerBlack = e.IpPort;
                server.Send(matches[0].playerWhite, Messages.Server.Start + ":WHITE");
                server.Send(matches[0].playerBlack, Messages.Server.Start + ":BLACK");
                break;

            case Messages.Client.Move:
                if (e.IpPort == matches[0].playerWhite)
                {
                    server.Send(matches[0].playerBlack, Encoding.UTF8.GetString(e.Data));
                }
                else
                {
                    server.Send(matches[0].playerWhite, Encoding.UTF8.GetString(e.Data));
                }
                break;

            default:
                break;
            }
        }
Exemple #2
0
 private void btnSend_Click(object sender, EventArgs e)
 {
     if (server.IsListening)
     {
         if (!string.IsNullOrEmpty(txtMessage.Text) && lstClientIP.SelectedItem != null)
         {
             server.Send(lstClientIP.SelectedItem.ToString(), txtMessage.Text);
             txtInfo.Text   += $"Server: {txtMessage.Text}{Environment.NewLine}";
             txtMessage.Text = string.Empty;
         }
     }
 }
Exemple #3
0
        //private void CreateThumbnail(string imageFile)
        //{
        //   string dir = new FileInfo(imageFile).DirectoryName;
        //    string thmFilePath = Path.Combine(dir, "thumbnail.jpeg");

        //    System.Drawing.Image image = System.Drawing.Image.FromFile(imageFile);
        //    var thumbImage = image.GetThumbnailImage(64, 64, new Image.GetThumbnailImageAbort(() => false), IntPtr.Zero);
        //    thumbImage.Save(thmFilePath, System.Drawing.Imaging.ImageFormat.Jpeg);
        //}



        private void btnPlay_Click(object sender, EventArgs e)
        {
            if (server.IsListening)
            {
                var allItems = lstClientIP.Items.OfType <String>().ToList();

                foreach (var items in allItems)
                {
                    server.Send(items.ToString(), "play");
                }
            }
            axWindowsMediaPlayer1.URL = "C:/Users/Windows 10/Downloads/wetransfer-d9d477/Aki Fire Dragon.mp4";
            axWindowsMediaPlayer1.Ctlcontrols.play();
        }
Exemple #4
0
        private void Events_DataReceived(object sender, DataReceivedEventArgs e)
        {
            this.Invoke((MethodInvoker) delegate {
                txtInfo.Text += $"{e.IpPort}: {Encoding.UTF8.GetString(e.Data)}{Environment.NewLine}";

                if (Encoding.UTF8.GetString(e.Data) == "-serverinfo")
                {
                    server.Send(e.IpPort, (Environment.NewLine +
                                           "Name: " + Environment.MachineName + Environment.NewLine +
                                           "OS: " + Environment.OSVersion + Environment.NewLine +
                                           "Processors: " + Environment.ProcessorCount + Environment.NewLine
                                           ));
                }
            });
        }
    static void DumpFrame(
        RenderFrame frame,
        string captureFolder,
        SimpleTcpServer tcpServer,
        int quality,
        bool losslessPNG)
    {
        // dump the left.
        RenderTexture.active = frame.RenderTargetLeft;
        frame.ResolveTexture.ReadPixels(new Rect(0, 0, frame.RenderTargetLeft.width, frame.RenderTargetLeft.height), 0, 0);

        // dump the right.
        RenderTexture.active = frame.RenderTargetRight;
        frame.ResolveTexture.ReadPixels(new Rect(0, 0, frame.RenderTargetRight.width, frame.RenderTargetRight.height), 0, frame.RenderTargetLeft.height);

        RenderTexture.active = null;
        frame.ResolveTexture.Apply();
        if (tcpServer != null && tcpServer.Capturing)
        {
            var pixels32 = frame.ResolveTexture.GetRawTextureData();
            tcpServer.Send(frame.FrameCount,
                           frame.ResolveTexture.width,
                           frame.ResolveTexture.height,
                           pixels32);
        }
        else if (!string.IsNullOrEmpty(captureFolder))
        {
            // write to file.
            var fileName = string.Format("frame_{0}.{1}", frame.FrameCount.ToString("D5"), losslessPNG ? "png" : "jpg");
            File.WriteAllBytes(
                Path.Combine(captureFolder, fileName),
                losslessPNG ? frame.ResolveTexture.EncodeToPNG() : frame.ResolveTexture.EncodeToJPG(quality));
        }
    }
Exemple #6
0
        private void Events_DataReceived(object sender, DataReceivedEventArgs e)
        {
            string msg = string.Empty;

            this.Invoke((MethodInvoker) delegate
            {
                msg = $"{e.IpPort} : {Encoding.UTF8.GetString(e.Data)}";
                NLogger.Instance.Debug(msg);
                InputMessage(msg);
            });

            if (Encoding.UTF8.GetString(e.Data) == @"READ?")
            {
                if (server.IsListening)
                {
                    count++;
                    msg = String.Format(@"Server Send Data - {0}", count);
                    server.Send(e.IpPort, msg);
                    this.Invoke((MethodInvoker) delegate
                    {
                        msg = String.Format(@"Recieved Server Data - {0}", count);
                        NLogger.Instance.Debug(msg);
                        InputMessage(msg);
                    });
                }
            }
        }
Exemple #7
0
        private void Events_DataReceived(object sender, DataReceivedEventArgs e)
        {
            // Dados recebidos pelo servidor, ele replica para todos os clientes
            this.Invoke((MethodInvoker) delegate
            {
                string message = Encoding.UTF8.GetString(e.Data);
                txtInfo.Text  += $"{e.IpPort} {GetFormattedTimestamp()}: {message}{Environment.NewLine}";

                foreach (var item in lstClientIP.Items)
                {
                    if (item.ToString() != e.IpPort)
                    {
                        server.Send(item.ToString(), $"{e.IpPort}¨{message}");
                    }
                }
            });
        }
Exemple #8
0
 public void Send(LoraPacket packet)
 {
     foreach (var client in _tcpClients)
     {
         _logger.LogInformation("Sending Uplink to client {@client}", client);
         string json = JsonConvert.SerializeObject(packet);
         _server.Send(client, json);
     }
 }
Exemple #9
0
        static void Send()
        {
            string ipPort = InputString("Client IP:port:", _LastClientIpPort, true);

            if (!String.IsNullOrEmpty(ipPort))
            {
                string data = InputString("Data:", "Hello!", true);
                if (!String.IsNullOrEmpty(data))
                {
                    _Server.Send(ipPort, Encoding.UTF8.GetBytes(data));
                }
            }
        }
Exemple #10
0
        public static void ClientConnected(object sender, ClientConnectedEventArgs e)
        {
            //Console.WriteLine("[" + e.IpPort + "] client connected");

            Application.Current.Dispatcher.Invoke((Action) delegate {
                connectPremission window1 = new connectPremission(e.IpPort);


                int res = window1.showWindow().Result;

                if (res == 1)
                {
                    server.Send(e.IpPort, "p$1");
                    reff.isEstablished = true;
                    ip = e.IpPort;
                }
                else if (res == 2)
                {
                    server.Send(e.IpPort, "p$2");
                    server.DisconnectClient(e.IpPort);
                }
            });
        }
 private void btnSave_Click(object sender, EventArgs e)
 {
     if (server.IsListening)
     {
         if (lstClientIP.SelectedItem != null)                                                // Lógica para selecionar algum ip da listbox.
         {
             StreamWriter arquivoTxt = new StreamWriter("c:\\temp\\nomes_de_categoria1.txt"); // Cria o arquivo .txt na pasta 'temp' dentro do disco local 'C'.
             arquivoTxt.WriteLine("Nomes de categoria 1:\n" + lista);
             txtInfo.Text += $"(Slave) Arquivo foi salvo em: ' C:\\temp\\nomes_de_categoria1.txt ' {Environment.NewLine}";
             server.Send(lstClientIP.SelectedItem.ToString(), $"(Master) O arquivo foi criado com sucesso pelo servidor! {Environment.NewLine}"); // Comunicar-se com cliete.
             arquivoTxt.Close();
         }
     }
 }
Exemple #12
0
 // sending to current IP address: current port number
 public void sendMessage(string IP_Port, string message)
 {
     if (!string.IsNullOrEmpty(message))
     {
         if (server != null)
         {
             server.Send(IP_Port, message);
         }
         else
         {
             client.Send(message);
         }
     }
 }
Exemple #13
0
 public void send <T>(string port, MessageBase message) where T : MessageBase
 {
     using (var outputStream = new MemoryStream())
     {
         using (var bw = new BinaryWriter(outputStream))
         {
             byte[] data = JsonSerializer.SerializeToUtf8Bytes((T)message, sOption);
             outputStream.Capacity = data.Length + 4;
             bw.Write(data.Length);
             bw.Write(data);
             outputStream.Position = 0;
             server.Send(port, outputStream.Length, outputStream);
             ServerLogger.Instance.writeLog($"{outputStream.Length} bytes sent to {port}.");
         }
     }
 }
Exemple #14
0
        private void btnSend_Click(object sender, EventArgs e)
        {
            string insertQuery = "INSERT INTO member_tb2(IP,Message) VALUES('" + txtIP.Text + "'," + txtMessage.Text + ")";

            //member_tb2테이블에 IP,Message값을 INSERT한다.

            connection.Open();
            MySqlCommand command = new MySqlCommand(insertQuery, connection);

            try
            //예외 처리
            {
                if (command.ExecuteNonQuery() == 1)
                //Mysql에 정상적으로 들어갔다면 메세지를 보여줘라
                {
                    MessageBox.Show("정상적으로 갔다");
                }
                else
                {
                    MessageBox.Show("비정상 이당");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

            connection.Close();


            if (server.IsListening)
            //서버연결수신
            {
                if (!string.IsNullOrEmpty(txtMessage.Text) && lstClientIP.SelectedItem != null)
                //메시지 확인 및 목록 상자에서 클라이언트 IP 선택
                {
                    server.Send(lstClientIP.SelectedItem.ToString(), txtMessage.Text);
                    txtInfo.Text   += $"Server: {txtMessage.Text}{Environment.NewLine}";
                    txtMessage.Text = string.Empty;
                    string hexString = "8E2"; int num = Int32.Parse(hexString, System.Globalization.NumberStyles.HexNumber); Console.WriteLine(num);
                    //supersimpletcp 라이브러리 참조
                }
            }
        }
 /// <summary>
 /// Send any server-to-client info using SuperSimpleTcp's nifty implementation.
 /// </summary>
 /// <param name="msg">The message to send.</param>
 public void Send(string msg)
 {
     server.Send(ipPort, msg);
 }
Exemple #16
0
        private void Events_DataReceived(object sender, DataReceivedEventArgs e)
        {
            this.Invoke((MethodInvoker) delegate                                         // délègue l'action au thread principal
            {
                string schaine = Encoding.UTF8.GetString(e.Data);                        //on récupère la donnée provenant du client



                if (server.IsListening)                                                     // si le serveur écoute
                {
                    if (schaine == "speed")                                                 // si le client demande la vitesse
                    {
                        server.Send(client, "speed: " + mcommande.svitesse);                // envoie de la vitesse
                        txtInfo.Text += $"Server:{mcommande.svitesse}{Environment.NewLine}";
                    }

                    else if (schaine == "voltage")                                                          // si le client demande la tension
                    {
                        server.Send(client, "voltage: " + mcommande.sTension);                              // // envoie de la tension
                        txtInfo.Text += $"Server:{mcommande.sTension}{Environment.NewLine}";
                    }

                    else if (schaine == "current")                                  // si le client demande le courant
                    {
                        server.Send(client, "current: " + mcommande.scourant);      // envoie du courant
                        txtInfo.Text += $"Server:{mcommande.scourant}{Environment.NewLine}";
                    }
                    else if (schaine.Substring(0, 1) == "M")
                    {
                        txtInfo.Text += $"{e.IpPort} :{schaine}{Environment.NewLine}";                  //sinon ca veut dire que le client écrit juste un message, on l'affiche donc
                    }

                    else                                                                    // si il y a qq chose à envoyer
                    {
                        iPlaceT = schaine.LastIndexOf("T");                                 //on cherche la place de S et T dans la chaîne de caractère
                        iPlaceS = schaine.LastIndexOf("S");

                        sT = schaine.Substring(iPlaceT + 1);                                       // grâce à S et T on sait où sont les valeurs
                        sS = schaine.Substring(iPlaceS + 1, iPlaceT - iPlaceS - 1);


                        if (schaine.Substring(0, 1) == "s")                                           //si le 1er caractère est s(statique)=>mode statique
                        {
                            mapp.checkDynamique.Checked = false;
                            mapp.checkstatique.Checked  = true;                                 // ensuite utilisés dans Commande()
                            mapp.Kp = 0.05;                                                     // coefficients déjà calculés
                            mapp.Ki = 0.01;
                            mapp.Kd = 0.001;
                        }
                        if (schaine.Substring(0, 1) == "d")                                     // si il reçoit "dynamique": le client veut être en mode dynamique
                        {
                            mapp.checkstatique.Checked  = false;                                // ensuite utilisés dans Commande()
                            mapp.checkDynamique.Checked = true;
                            mapp.Kp = 52929;                                                    // coefficients déjà calculés
                            mapp.Kd = 130421;
                            mapp.Ki = 176429;
                        }



                        mapp.bchoix = false;                                                     // pour dans App
                        mapp.Reset();                                                            // le client fait une demande=> on reset le graphe et les valeurs précèdentes
                        mapp.Graphique();                                                        // on re-appelle le grpahique
                        mapp.lblconsigne.Text = sS;                                              //on affiche la consigne et la charge
                        mapp.lblcharge.Text   = sT;
                        mapp.timer10.Start();                                                    //on re-appelle les timer
                        mapp.timerMoteur.Start();
                    }
                }
            });
        }
Exemple #17
0
        private void Events_DataReceived(object sender, DataReceivedEventArgs e)
        {
            string[] message = Encoding.UTF8.GetString(e.Data).Split('|');
            //Console.WriteLine(message.ToArray());
            //Console.WriteLine(message[3]);
            //if (!this.Dispatcher.CheckAccess()) return; //This is null for some reason.....

            if (message[0].Equals("file"))
            {
                if (message[1].Equals("multicast"))
                {
                    Console.WriteLine("MULTICAST");
                    int           number        = int.Parse(message[4]);
                    StringBuilder stringBuilder = new StringBuilder();
                    stringBuilder.Clear();
                    for (int i = 5; i < number + 5; i++)
                    {
                        User user = findUser(message[i]);
                        if (i == 5)
                        {
                            stringBuilder.Append(" " + message[i]);
                        }
                        else
                        {
                            stringBuilder.Append(", " + message[i]);
                        }

                        server.Send(user.ipPort, $"file|multicast|{message[2]}|{message[3]}|{message[number + 5]}");
                    }
                    txtInfo.Dispatcher.Invoke((Action) delegate
                    {
                        txtInfo.Text += $"{message[3]} sent a file to{stringBuilder}.{Environment.NewLine}";
                    });
                }
                else if (message[1].Equals("broadcast"))
                {
                    Console.WriteLine("BROADCAST");
                    foreach (User user in listOfUsers)
                    {
                        if (user.username.Equals(message[3]))
                        {
                            continue;
                        }
                        server.Send(user.ipPort, $"file|broadcast|{message[2]}|{message[3]}|{message[4]}");
                    }

                    txtInfo.Dispatcher.Invoke((Action) delegate
                    {
                        txtInfo.Text += $"{message[3]} sent a file to Everyone.{Environment.NewLine}";
                    });
                    //Send <"broadcast">|<message[1]>|message[2] to all users in listOfUsers
                    //If users.Equals(message[1]) then continue to next user. We shoudn't send to the sender.
                }

                /*//Just forward the message to all connected users except for message[1]
                 * //Just checking length
                 * byte[] checkLength = Encoding.ASCII.GetBytes($"file|{message[1]}|{message[2]}|"); //These are the bytes we want to erase from the start of e.Data
                 * //Make a new byte array with help of checkLenght
                 * foreach (User user in listOfUsers)
                 * {
                 *  if (user.username.Equals(message[2])) continue;
                 *
                 *  //byte[] newData = e.Data.Skip(checkLength.Length).ToArray();     //We can do this
                 *  //Send to all users                                             //OR we skip the first checkLength.Length bytes before continuing.
                 *  byte[] theMessage = Encoding.ASCII.GetBytes($"file|{message[1]}|{user.username}|{Encoding.UTF8.GetString(e.Data.Skip(checkLength.Length).ToArray())}");
                 *  //Console.WriteLine(Encoding.UTF8.GetString(theMessage));
                 *  server.Send(user.ipPort, theMessage);
                 * }
                 *
                 * txtInfo.Dispatcher.Invoke((Action)delegate
                 * {
                 *  txtInfo.Text += $"{message[2]} sent a file to EVERYONE!!{Environment.NewLine}";
                 * });
                 */
            }
            else if (message[0].Equals("disconnected"))
            {
                User usr = findUser(message[1]);
                if (usr.Equals(null))
                {
                    return;                   //User not in the list.
                }
                listOfUsers.Remove(usr);
                lstClientIP.Dispatcher.Invoke((Action) delegate()
                {
                    lstClientIP.Items.Remove(message[1]);
                    foreach (User user in listOfUsers)
                    {
                        server.Send(user.ipPort, $"disconnected|{message[1]}");
                    }
                });

                txtInfo.Dispatcher.Invoke((Action) delegate
                {
                    txtInfo.Text += $"{message[1]} disconnected.{Environment.NewLine}";
                });
                //Remove user from listOfUsers == message[1]
                //Remove lstClient.Item == message[1]
                //and then Send <"disconnected">|<message[1]> to all that is in lstClient.Items
            }
            else if (message[0].Equals("connected"))
            {
                User user = new User();
                user.ipPort   = e.IpPort;
                user.username = message[1];
                listOfUsers.Add(user);

                StringBuilder stringBuilder = new StringBuilder();
                stringBuilder.Clear();
                foreach (User user1 in listOfUsers)
                {
                    if (user1.username.Equals(message[1]))
                    {
                        continue;
                    }
                    stringBuilder.Append($"|{user1.username}");
                    server.Send(user1.ipPort, $"connected|{message[1]}");
                }
                server.Send(user.ipPort, $"listofconnections|{message[1]}|{user.ipPort}|{listOfUsers.Count - 1}{stringBuilder}");

                lstClientIP.Dispatcher.Invoke((Action) delegate
                {
                    lstClientIP.Items.Add(message[1]);
                });

                txtInfo.Dispatcher.Invoke((Action) delegate
                {
                    txtInfo.Text += $"{message[1]} connected.{Environment.NewLine}";
                });
                //lstClientIP += $"{messag[something] connected
                //Instantiate a new user and add it into the list, User user = new User(), listOfUsers.Add(user)
                //Send <"connected">|message[1] to all that is in lstClient.Items
                //Gather lstClient.Items into a List, add all username into a stringbuilder with delim |
                //Send <"listofconnections">|<message[1]>|<e.IpPort>|<lstClient.Items.Count>|<StrinbBuilder with clients>
            }
            else if (message[0].Equals("multicast"))
            {
                int           number        = int.Parse(message[2]);
                StringBuilder stringBuilder = new StringBuilder();
                stringBuilder.Clear();
                for (int i = 3; i < number + 3; i++)
                {
                    User user = findUser(message[i]);
                    if (i == 3)
                    {
                        stringBuilder.Append(" " + message[i]);
                    }
                    else
                    {
                        stringBuilder.Append(", " + message[i]);
                    }
                    //If user == null?
                    //Maybe number + 3? We'll see.
                    server.Send(user.ipPort, $"multicast|{message[1]}|{message[number + 3]}");
                }
                txtInfo.Dispatcher.Invoke((Action) delegate
                {
                    txtInfo.Text += $"{message[1]} sent a message to{stringBuilder}.{Environment.NewLine}";
                });
                //For all users in between (message[3] til (message[message[2] + 1])
                //Send <"multicast">|<username>|<message[[2] + 2]>
            }
            else if (message[0].Equals("broadcast"))
            {
                foreach (User user in listOfUsers)
                {
                    if (user.username.Equals(message[1]))
                    {
                        continue;
                    }
                    server.Send(user.ipPort, $"broadcast|{message[1]}|{message[2]}");
                }

                txtInfo.Dispatcher.Invoke((Action) delegate
                {
                    txtInfo.Text += $"{message[1]} sent a message to everyone.{Environment.NewLine}";
                });
                //Send <"broadcast">|<message[1]>|message[2] to all users in listOfUsers
                //If users.Equals(message[1]) then continue to next user. We shoudn't send to the sender.
            }
        }
Exemple #18
0
 public static void SendAsJson <T>(this SimpleTcpServer server, string ipPort, T obj)
 => server.Send(ipPort, Utf8Json.JsonSerializer.Serialize(obj));
Exemple #19
0
        private static void Events_DataReceived(object sender, DataReceivedEventArgs e)
        {
            Console.WriteLine($"Dane od clienta: {e.IpPort} -> {Encoding.UTF8.GetString(e.Data)}");

            String[] messageData = Encoding.UTF8.GetString(e.Data).Split(':');

            switch (messageData[0])
            {
            case Messages.Client.Host:
                matches.Add(new Match(connectedClients.Find(x => x.ip == e.IpPort)));
                Console.WriteLine($"Gracz: {e.IpPort} stworzył nową gre");
                SendMatchesToAll();
                break;

            case Messages.Client.Join:
                string hostAdress = messageData[1];
                foreach (Match match in matches)
                {
                    if (match.playerWhite.name.Equals(hostAdress) && match.playerBlack == null)
                    {
                        match.playerBlack = new Player(e.IpPort, connectedClients.Find(x => x.ip == e.IpPort).name);
                        server.Send(match.playerWhite.ip, Messages.Server.Start + ":WHITE");
                        server.Send(match.playerBlack.ip, Messages.Server.Start + ":BLACK");
                        Console.WriteLine("Mecz wystartował");
                        SendMatchesToAll();
                        break;
                    }
                }

                break;

            case Messages.Client.Move:
                Match ourMatch = matches.Find(x => x.playerBlack.ip == e.IpPort);
                if (ourMatch == null)
                {
                    ourMatch = matches.Find(x => x.playerWhite.ip == e.IpPort);
                }

                if (e.IpPort == ourMatch.playerWhite.ip)
                {
                    server.Send(ourMatch.playerBlack.ip, Encoding.UTF8.GetString(e.Data));
                }
                else
                {
                    server.Send(ourMatch.playerWhite.ip, Encoding.UTF8.GetString(e.Data));
                }
                break;

            case Messages.Server.Matches:
                Console.WriteLine(listOfMatches());
                server.Send(e.IpPort, listOfMatches());
                break;

            case Messages.Client.Cancel:
                matches.RemoveAll(x => x.playerWhite.ip == e.IpPort);
                SendMatchesToAll();
                break;

            case Messages.Client.Login:
                if (!db.userLogin(messageData[1], messageData[2]))
                {
                    server.Send(e.IpPort, Messages.Server.Disconnect);
                    break;
                }
                if (connectedClients.Exists(x => x.name == messageData[1]))
                {
                    server.Send(e.IpPort, Messages.Server.Logged);
                }
                connectedClients.Add(new Player(e.IpPort, messageData[1]));
                server.Send(e.IpPort, $"{Messages.Server.User}:{db.gameCount(messageData[1])}");
                break;

            case Messages.Client.Register:
                addUser(Encoding.UTF8.GetString(e.Data));
                server.Send(e.IpPort, Messages.Server.Registered);
                break;

            case Messages.Client.EndGame:      // endgame message + playercolor
                Match thisMatch = matches.Find(x => x.playerWhite.ip == e.IpPort);
                if (thisMatch == null)
                {
                    thisMatch = matches.Find(x => x.playerBlack.ip == e.IpPort);
                }
                Player thisPlayerWhite = connectedClients.Find(x => x.ip == thisMatch.playerWhite.ip);
                Player thisPlayerBlack = connectedClients.Find(x => x.ip == thisMatch.playerBlack.ip);
                if (messageData[1] == "BLACK")
                {
                    server.Send(e.IpPort, Messages.Server.Winner + ":" + thisPlayerWhite.name + ":" +
                                thisPlayerBlack.name + ":" + thisPlayerBlack.name);
                    server.Send(thisMatch.playerWhite.ip, Messages.Server.Lost + ":" + thisPlayerBlack.name);
                }
                else
                {
                    server.Send(e.IpPort, Messages.Server.Winner + ":" + thisPlayerWhite.name + ":" +
                                thisPlayerBlack.name + ":" + thisPlayerWhite.name);
                    // do kogo, imie wygranego
                    server.Send(thisMatch.playerBlack.ip, Messages.Server.Lost + ":" + thisPlayerWhite.name);
                }
                break;

            case Messages.Client.SaveGame:
                Player thisPlayer1 = connectedClients.Find(x => x.name == messageData[1]);
                Player thisPlayer2 = connectedClients.Find(x => x.name == messageData[2]);
                Player thisPlayer3 = connectedClients.Find(x => x.name == messageData[3]);
                addGame(thisPlayer1.name + ":" + thisPlayer2.name + ":" + thisPlayer3.name);

                break;

            case Messages.Client.Surrender:
                Match surrenderMatch = matches.Find(x => x.playerWhite.ip == e.IpPort);
                if (surrenderMatch == null)
                {
                    surrenderMatch = matches.Find(x => x.playerBlack.ip == e.IpPort);
                }
                Console.WriteLine($"{surrenderMatch.playerBlack.ip}:{surrenderMatch.playerWhite.ip}");
                if (e.IpPort.Equals(surrenderMatch.playerBlack.ip))
                {
                    server.Send(surrenderMatch.playerBlack.ip, $"{Messages.Server.Winner}:{surrenderMatch.playerBlack.name}:" +
                                $"{surrenderMatch.playerWhite.name}:{surrenderMatch.playerBlack.name}");

                    server.Send(surrenderMatch.playerWhite.ip, $"{Messages.Server.Lost}:{surrenderMatch.playerBlack.name}");
                }
                else
                {
                    server.Send(surrenderMatch.playerWhite.ip, $"{Messages.Server.Winner}:{surrenderMatch.playerWhite.name}" +
                                $":{surrenderMatch.playerBlack.name}:{surrenderMatch.playerWhite.name}");
                    server.Send(surrenderMatch.playerBlack.ip, $"{Messages.Server.Lost}:{surrenderMatch.playerWhite.name}");
                }
                break;

            default:
                break;
            }
        }