Exemple #1
0
        private void Events_DataReceived(object sender, DataReceivedEventArgs e)
        {
            string[] message = Encoding.UTF8.GetString(e.Data).Split('|');

            if (message[0].Equals("file"))
            {
                //Implement broadcast or mutlicast, not really needed though but anyway
                Console.WriteLine(message[4]);

                SaveFileDialog dialog = new SaveFileDialog
                {
                    Filter           = "All files(*.*)|*.*",
                    RestoreDirectory = true,
                    Title            = "Where do you want to save the file?",
                    FileName         = ""
                };
                var extension = message[2];

                var fileName = string.Empty;
                if (dialog.ShowDialog() == true)
                {
                    fileName = dialog.FileName;
                }

                if (fileName != string.Empty)
                {
                    if (!fileName.Contains(extension))
                    {
                        fileName += extension;
                    }

                    File.WriteAllText(fileName, message[4]);

                    txtInfo.Dispatcher.Invoke((Action) delegate
                    {
                        txtInfo.Text += $"{message[3]} sent a file, saved to: {fileName}{Environment.NewLine}";
                    });
                }
                else
                {
                    txtInfo.Dispatcher.Invoke((Action) delegate
                    {
                        txtInfo.Text += $"{message[3]} sent a file, it didn't work{Environment.NewLine}";
                    });
                }
            }
            else if (message[0].Equals("disconnected"))
            {
                lstClientIP.Dispatcher.Invoke((Action) delegate()
                {
                    lstClientIP.Items.Remove(message[1]);
                });
            }
            else if (message[0].Equals("connected"))
            {
                lstClientIP.Dispatcher.Invoke((Action) delegate()
                {
                    lstClientIP.Items.Add(message[1]);
                });
            }
            else if (message[0].Equals("multicast"))
            {
                txtInfo.Dispatcher.Invoke((Action) delegate()
                {
                    txtInfo.Text += $"{message[1]}: {message[2]}{Environment.NewLine}";
                });
            }
            else if (message[0].Equals("broadcast"))
            {
                txtInfo.Dispatcher.Invoke((Action) delegate()
                {
                    txtInfo.Text += $"{message[1]} to Everyone: {message[2]}{Environment.NewLine}";
                });
            }
            else if (message[0].Equals("listofconnections"))
            {
                //Updating the IpPort for this.user and user in DB.
                user.ipPort = message[2];
                SqlConnection sqlConnection = DBService.Get_DB_Connection();
                string        QUERY         = "UPDATE db_Clients SET IpPort=@IpPort WHERE Username=@Username2";
                SqlCommand    sqlComm       = new SqlCommand(QUERY, sqlConnection);
                sqlComm.CommandType = System.Data.CommandType.Text;
                sqlComm.Parameters.AddWithValue("@IpPort", user.ipPort);
                sqlComm.Parameters.AddWithValue("@Username2", message[1]);
                sqlComm.ExecuteNonQuery();
                DBService.Close_DB_Connection();

                int           NoOfConnections   = int.Parse(message[3]);
                List <string> listOfConnections = new List <string>();
                lstClientIP.Dispatcher.Invoke((Action) delegate()
                {
                    for (int i = 0; i < NoOfConnections; i++)
                    {
                        listOfConnections.Add(message[i + 4]);
                        lstClientIP.Items.Add(message[i + 4]);
                    }
                });
            }
        }