예제 #1
0
        private void d_ll_tak_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            d_sfd_zapiszPlik.FileName = FileMessage.tresc.Split(';')[0];
            if (d_sfd_zapiszPlik.ShowDialog() == DialogResult.OK)
            {
                d_f_postepPobierania oknopostep = new d_f_postepPobierania(d_sfd_zapiszPlik.FileName, FileMessage, this);
                oknopostep.Parent = this.Parent;
                oknopostep.Show();
            }

            BinaryWriter pisanie = new BinaryWriter(((clientInfo)klienci[FileMessage.nadawca]).tcpclient.GetStream());

            FileMessage.komenda  = "FILEYES";
            FileMessage.tresc    = FileMessage.tresc.Split(';')[0] + ";" + serwer.LocalEndpoint.ToString();
            FileMessage.odbiorca = FileMessage.nadawca;
            FileMessage.nadawca  = "ADMIN";
            try
            {
                pisanie.Write(kk.ConvertToXML(FileMessage));
            }
            catch (IOException)
            {
                return;
            }

            d_l_odbierz.Enabled = false;
            d_ll_tak.Enabled    = false;
            d_ll_nie.Enabled    = false;
        }
예제 #2
0
 private void d_ll_tak_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
 {
     d_sfd_zapiszPlik.FileName = d_f_klient.plik;
     if (d_sfd_zapiszPlik.ShowDialog() == DialogResult.OK)
     {
         d_f_postepPobierania oknopostep = new d_f_postepPobierania(d_sfd_zapiszPlik.FileName, d_f_klient, this);
         oknopostep.Parent = this.Parent;
         oknopostep.Show();
         d_l_odbierz.Enabled = false;
         d_ll_tak.Enabled    = false;
         d_ll_nie.Enabled    = false;
         BinaryWriter pisanie = new BinaryWriter(d_f_klient.ns);
         wiadomosc.komenda  = "FILEYES";
         wiadomosc.tresc    = d_f_klient.plik;
         wiadomosc.odbiorca = p;
         try
         {
             pisanie.Write(kk.ConvertToXML(wiadomosc));
         }
         catch (IOException)
         {
             d_f_klient.d_ms_rozlacz_Click(sender, e);
         }
     }
     else
     {
         d_ll_nie_LinkClicked(sender, e);
     }
 }
예제 #3
0
        private void watek_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker bw         = (BackgroundWorker)sender;
            string           userkey    = (string)(e.Argument as object[])[0];
            clientInfo       uzytkownik = (clientInfo)klienci[userkey];

            BinaryReader r = new BinaryReader(uzytkownik.tcpclient.GetStream());
            BinaryWriter w = new BinaryWriter(uzytkownik.tcpclient.GetStream());
            MessageData  dane;

            while (true)
            {
                if (bw.CancellationPending == true)
                {
                    e.Cancel = true;
                    return;
                }
                try
                {
                    dane = kk.ConvertOutXML(r.ReadString());
                }
                catch (IOException)
                {
                    return;
                }
                switch (dane.komenda)
                {
                case "NEWPASS":
                    dane.komenda = "PASSANS";
                    string temp = dane.odbiorca;
                    dane.odbiorca = dane.nadawca;
                    dane.nadawca  = temp;
                    XmlDocument doc = new XmlDocument();
                    doc.Load("UserDatabase.xml");
                    XmlNodeList nodes = doc.SelectNodes("/USERS/user[@login=\"" + dane.odbiorca + "\" and pass=\"" + dane.tresc.Split(':')[0] + "\"]");
                    if (nodes.Count != 0)
                    {
                        XmlNode newNode = doc.CreateElement("pass");
                        newNode.AppendChild(doc.CreateTextNode(dane.tresc.Split(':')[1]));
                        foreach (XmlNode node in nodes)
                        {
                            node.ReplaceChild(newNode, node.FirstChild.NextSibling);
                        }
                        doc.Save("UserDatabase.xml");
                        dane.tresc = "Operacja zmiany hasła powiodła się.";
                        try
                        {
                            w.Write(kk.ConvertToXML(dane));
                        }
                        catch
                        {
                            return;
                        }
                    }
                    else
                    {
                        dane.tresc = "Operacja zmiany hasła NIE powiodła się.";
                        try
                        {
                            w.Write(kk.ConvertToXML(dane));
                        }
                        catch
                        {
                            return;
                        }
                    }
                    break;

                case "FILEYES":
                    try
                    {
                        dane.tresc += ";" + uzytkownik.tcpclient.Client.RemoteEndPoint.ToString();
                        clientInfo odbKlient = (clientInfo)klienci[kk.GetLogin(dane.odbiorca, lokalizacja)];
                        dane.nadawca = kk.GetName(dane.nadawca, lokalizacja);
                        BinaryWriter bwKlient = new BinaryWriter(odbKlient.tcpclient.GetStream());
                        bwKlient.Write(kk.ConvertToXML(dane));
                        dane.komenda = "";
                    }
                    catch (Exception)
                    {
                        if (dane.odbiorca == "ADMIN")
                        {
                            kk.WpiszTekst(d_wb_oknorozmowy, "IM", "Użytkownik potwierdził odbiór pliku: <b>" + dane.tresc.Split(';')[0] + "</b>");
                            this.Invoke((MethodInvoker) delegate()
                            {
                                d_f_postepPobierania oknoWysylanie = new d_f_postepPobierania(dane, this);
                                oknoWysylanie.Parent = this.Parent;
                                oknoWysylanie.Show();
                            });
                            continue;
                        }
                        dane.komenda = "ERROR";
                        string tmp = dane.odbiorca;
                        dane.odbiorca = dane.nadawca;
                        dane.nadawca  = tmp;
                        dane.tresc    = "Serwer: Użytkownik się rozłączył";
                        w.Write(kk.ConvertToXML(dane));
                    }
                    break;

                default:
                    try
                    {
                        clientInfo odbKlient = (clientInfo)klienci[kk.GetLogin(dane.odbiorca, lokalizacja)];
                        dane.nadawca = kk.GetName(dane.nadawca, lokalizacja);
                        BinaryWriter bwKlient = new BinaryWriter(odbKlient.tcpclient.GetStream());
                        bwKlient.Write(kk.ConvertToXML(dane));
                        dane.komenda = "";
                    }
                    catch (Exception)
                    {
                        if (dane.odbiorca == "ADMIN")
                        {
                            if (dane.komenda == "FILE")
                            {
                                FileMessage = dane;
                                kk.WpiszTekst(d_wb_oknorozmowy, "IM", "Użytkownik przesyła plik: <b>" + dane.tresc.Split(';')[0] + "</b> o rozmiarze: <b>" + long.Parse(dane.tresc.Split(';')[1]) / 1024 + " Kb </b>");
                                this.Invoke((MethodInvoker) delegate()
                                {
                                    d_l_odbierz.Enabled = true;
                                    d_ll_tak.Enabled    = true;
                                    d_ll_nie.Enabled    = true;
                                });
                            }
                            else if (dane.komenda == "FILENO")
                            {
                                kk.WpiszTekst(d_wb_oknorozmowy, "IM", "Użytkownik odrzucił transfer pliku: <b>" + infoFile.Name + "</b>");
                            }
                            else
                            {
                                kk.WpiszTekst(d_wb_oknorozmowy, kk.GetName(dane.nadawca, lokalizacja), dane.tresc);
                            }
                            continue;
                        }
                        dane.komenda = "ERROR";
                        string tmp = dane.odbiorca;
                        dane.odbiorca = dane.nadawca;
                        dane.nadawca  = tmp;
                        dane.tresc    = "Serwer: Użytkownik się rozłączył";
                        w.Write(kk.ConvertToXML(dane));
                    }
                    break;
                }
            }
        }
예제 #4
0
        private void d_bw_komunikacja_DoWork(object sender, DoWorkEventArgs e)
        {
            BinaryReader czytanie     = new BinaryReader(ns);
            ustawienia   konfiguracja = new ustawienia();

            while (true)
            {
                try
                {
                    komunikat = kk.ConvertOutXML(czytanie.ReadString());
                }
                catch (IOException)
                {
                    return;
                }
                switch (komunikat.komenda)
                {
                case "LISTUSERS":
                    kk.ClearText(d_lb_uzytkownicy);
                    string[] user = komunikat.tresc.Split(new char[] { ':' });
                    for (int i = 0; i < user.Length - 1; i++)
                    {
                        if (login != user[i].Split(';')[1])
                        {
                            kk.SetText(d_lb_uzytkownicy, user[i].Split(';')[0]);
                        }
                        else
                        {
                            this.Invoke((MethodInvoker) delegate()
                            {
                                this.Text = "IM - " + user[i].Split(';')[0];
                            });
                        }
                    }
                    break;

                case "PING":
                    ping = DateTime.Now;
                    break;

                case "SAY":
                    kk.newMessage(this, komunikat);
                    break;

                case "ERROR":
                    kk.newMessage(this, komunikat);
                    this.Invoke((MethodInvoker) delegate()
                    {
                        okna[komunikat.nadawca].f_tb_wiadomosc.Enabled = false;
                        okna[komunikat.nadawca].f_b_wyslij.Enabled     = false;
                    });
                    break;

                case "PASSANS":
                    kk.SetText(d_lb_komunikaty, komunikat.tresc);
                    break;

                case "FILE":
                    kk.newMessage(this, komunikat, "IM", "Użytkownik przesyła plik: <b>" + komunikat.tresc.Split(';')[0] + "</b> o rozmiarze: <b>" + long.Parse(komunikat.tresc.Split(';')[1]) / 1024 + " Kb </b>");
                    plik    = komunikat.tresc.Split(';')[0];
                    rozmiar = long.Parse(komunikat.tresc.Split(';')[1]);
                    this.Invoke((MethodInvoker) delegate()
                    {
                        okna[komunikat.nadawca].d_l_odbierz.Enabled = true;
                        okna[komunikat.nadawca].d_ll_tak.Enabled    = true;
                        okna[komunikat.nadawca].d_ll_nie.Enabled    = true;
                    });
                    break;

                case "FILEYES":
                    kk.newMessage(this, komunikat, "IM", "Użytkownik potwierdził odbiór pliku: <b>" + komunikat.tresc.Split(';')[0] + "</b>");
                    rozmiar = okna[komunikat.nadawca].infoFile.Length;
                    this.Invoke((MethodInvoker) delegate()
                    {
                        d_f_postepPobierania oknoWysylanie = new d_f_postepPobierania(this, komunikat, okna[komunikat.nadawca].infoFile.Name);
                        oknoWysylanie.Parent = okna[komunikat.nadawca].Parent;
                        oknoWysylanie.Show();
                    });
                    break;

                case "FILENO":
                    kk.newMessage(this, komunikat, "IM", "Użytkownik odrzucił transfer pliku: <b>" + plik + "</b>");
                    break;
                }
            }
        }