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; }
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); } }
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; } } }
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; } } }