public transferfile_form(CUser mme, CUser hhe, int men) { InitializeComponent(); timer.Stop(); senderr = true; CheckForIllegalCrossThreadCalls = false; me=mme; he=hhe; meformnum = men; Random r = new Random(); this.port = r.Next(5000) + 6000; this.Text = "Отправка файла - "+hhe.name; lbl_state.Text = "Ожидание..."; }
public transferfile_form(CUser mme, CUser hhe, int pport, string rfile, string file_l,int men, int hen) { InitializeComponent(); senderr = false; me = mme; he = hhe; timer.Stop(); meformnum = men; heformnum = hen; this.port = pport; file = rfile; send_btn.Text = "Принять"; CheckForIllegalCrossThreadCalls = false; download_dir = Properties.Settings.Default.DownloadDir; txt_filepath.Text = download_dir+@"\"+rfile; file_length = Convert.ToInt64(file_l); if (file_length > 1048576) file_size = ((double)file_length / 1048576).ToString("#.##")+" Mb"; else file_size = ((double)file_length / 1024).ToString("#.##")+ " Kb"; label.Text = "Пользователь " + he.name + " хочет переслать вам файл [" + file_size + "]"; this.Text = "Прием файла - " + rfile; lbl_state.Text = "Ожидание..."; }
private TabPage SecretChatPage(CUser user) { TabPage tp = new TabPage(user.name); tp.Name = "tab"+user.ID; tp.Tag = 0; RichTextBox rtb = new RichTextBox(); tp.Controls.Add(rtb); rtb.Name = "rtb" + user.ID; rtb.Width = tp.Width; rtb.Height = tp.Height ; rtb.ReadOnly = true; rtb.BackColor = Color.White; rtb.Anchor = textMessages.Anchor; rtb.TextChanged += new EventHandler(rtb_TextChanged); return tp; }
public f_GameKNB(CUser user_protiv, CUser user_me) { InitializeComponent(); protiv = user_protiv; me = user_me; }
private TabPage PageIsSet(CUser user) { foreach (TabPage tp in tabControl.TabPages) { if (tp.Name == "tab" + user.ID) { return tp; } } return null; }
private void main_form_Load(object sender, EventArgs e) { try { me = new CUser(System.Environment.UserName); groupAddress = IPAddress.Parse("234.0.0.1"); localPort = 7777; remotePort = 7777; ttl = 32; if (Properties.Settings.Default.ID != "") { me.ID = Properties.Settings.Default.ID; me.name = Properties.Settings.Default.Name; me.color = Color.FromArgb(Properties.Settings.Default.Color); } RefreshChanelMenu(); if (Properties.Settings.Default.LogDir == "") { Properties.Settings.Default.LogDir = System.Environment.CurrentDirectory + "\\logs"; } if (!Directory.Exists(Properties.Settings.Default.LogDir)) { Directory.CreateDirectory(Properties.Settings.Default.LogDir); } if (Properties.Settings.Default.DownloadDir == "") { Properties.Settings.Default.DownloadDir = System.Environment.CurrentDirectory + "\\downloads"; } if (!Directory.Exists(Properties.Settings.Default.DownloadDir)) { Directory.CreateDirectory(Properties.Settings.Default.DownloadDir); } IPHostEntry ips = Dns.GetHostEntry(Dns.GetHostName()); int y =0; foreach (IPAddress ip in ips.AddressList) { if (!ip.IsIPv6LinkLocal) me.IP = ips.AddressList[y]; y++; } ts_name.Text = me.name; ts_name.DropDown.Items[0].Text = "Использовать Windows-имя (" + System.Environment.UserName + ")"; this.WriteLog("***** Начало журнала ("+ DateTime.Now +") *****","Общий чат",true); meme = me; this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint, true); PBboard.Image = Image.FromFile(Environment.CurrentDirectory + @"\white.bmp"); P_Pen = new Pen(BTNcolor.BackColor, 1); P_Pen.StartCap = LineCap.Round; P_Pen.EndCap = LineCap.Round; TSCBlinethickness.SelectedIndex = 0; } catch { MessageBox.Show("Ошибка конфигурации!", "Ошибка!"); } try { client = new UdpClient(localPort); client.JoinMulticastGroup(groupAddress, ttl); remoteEP = new IPEndPoint(groupAddress, remotePort); receiver = new Thread(new ThreadStart(Listener)); receiver.IsBackground = true; receiver.Start(); SendData("i",""); } catch { MessageBox.Show("Приложение уже запущенно", "Ошибка!"); Environment.Exit(0); } UsersListAdd(me); refresher.Start(); }
private void DisplayResivedMessage() { string MsgType = message.Split('|')[1]; string user = message.Split('|')[2]; string user_name = user.Split('¶')[1]; string user_id = user.Split('¶')[2]; int user_color = Convert.ToInt32(user.Split('¶')[3]); IPAddress user_ip = IPAddress.Parse(user.Split('¶')[4]); int user_pen_color = Convert.ToInt32(user.Split('¶')[5]); int user_pen_width = Convert.ToInt32(user.Split('¶')[6]); string user_paint_type = user.Split('¶')[7]; Pen p = new Pen(Color.FromArgb(user_pen_color), user_pen_width); p.StartCap = LineCap.Round; p.EndCap = LineCap.Round; string time = DateTime.Now.ToString("t"); CUser sender_user = new CUser(user_name, user_id, Color.FromArgb(user_color), user_ip,p,user_paint_type); switch (MsgType) { //Вход в чат case "i": AddText(textMessages," ***" + sender_user.name + " вошёл в чат***\n", "system","null"); SendData("r",'|' + sender_user.ID); if (me.ID != sender_user.ID && GetUserByID(sender_user.ID)==null) UsersListAdd(sender_user); break; //Выход из чата case "o": AddText(textMessages, " ***" + GetUserByID(sender_user.ID).name + " вышел из чата***\n", "system", "null"); if (GetUserByID(sender_user.ID)!=null) UsersListRemove(sender_user.ID); break; //Сообщение в общий чат case "m": AddText(textMessages, message.Split('|')[3] + "\n", "user", sender_user.ID); toolStripStatusLabel1.Text = "Последнее сообщение полученно " + time; break; //Сообщение о присутсвии в чате case "r": if (me.ID == (message.Split('|')[3]) & me.ID != sender_user.ID) UsersListAdd(sender_user); break; //Смена цвета чата case "cc": SetUserColor(sender_user.ID, user_color); AddText(textMessages, " ***Пользователь " + sender_user.name + " сменил свой цвет чата***\n", "system", sender_user.ID); break; //Смена имени case "nc": AddText(textMessages, " ***Пользователь сменил своё имя (" + GetUserByID(sender_user.ID).name + "->" + message.Split('|')[3] + ")***\n", "system", "null"); GetUserByID(sender_user.ID).name = message.Split('|')[3]; users_listbox.Items[GetUserPos(sender_user.ID)] = message.Split('|')[3]; ts_name.Text = me.name; if (PageIsSet(sender_user) != null) PageIsSet(sender_user).Text = sender_user.name; break; //Прием файла case "sf": if (me.ID == (message.Split('|')[3])) { int k = GetFormNum(); rf[k] = new transferfile_form(me, sender_user, Convert.ToInt32(message.Split('|')[7]), message.Split('|')[4], message.Split('|')[8], k,Int32.Parse( message.Split('|')[9])); rf[k].Show(); } break; //Подтверждение приема case "rf": if (me.ID == (message.Split('|')[3])) { int n = Int32.Parse(message.Split('|')[5]); if (rf[n] != null) { rf[n].heformnum = Int32.Parse(message.Split('|')[6]); rf[n].bw_sender.RunWorkerAsync();} } break; //Отказ от файла case "cf": if (me.ID == (message.Split('|')[3])) { int n=Int32.Parse(message.Split('|')[4]); rf[n].lbl_state.Text = "Пользователь отказался от вашего файла"; rf[n].send_btn.Enabled = true; rf[n].choosefile_btn.Enabled = true; } break; //Прерывание передачи case "fc": if (me.ID == (message.Split('|')[3])) { int n = Int32.Parse(message.Split('|')[4]); if (rf[n] != null) rf[n].client.Close(); } break; //Создание секретного чата case "nsc": if (me.ID == (message.Split('|')[3])) { CreateSecretChat(sender_user); } break; //Сообщение в секретный чат case "scm": if (me.ID == (message.Split('|')[3])) { if (PageIsSet(sender_user) == null) { CreateSecretChat(sender_user); } AddText(tabControl.TabPages["tab"+sender_user.ID].Controls["rtb"+sender_user.ID] as RichTextBox, message.Split('|')[4] + "\n", "user", sender_user.ID); if (tabControl.TabPages["tab" + sender_user.ID] != tabControl.SelectedTab) { tabControl.TabPages["tab" + sender_user.ID].Tag = 1; } } tabControl.SelectedTab.Text = tabControl.SelectedTab.Text; toolStripStatusLabel1.Text = "Последнее сообщение полученно " + time; break; //Запрос обновления списка пользователей case "rl": SendData("rla","|"+sender_user.ID); break; //Ответ на запрос обновления списка пользователей case "rla": if (me.ID == (message.Split('|')[3])) { if (GetUserByID(sender_user.ID) != null) GetUserByID(sender_user.ID).Refresh(); else UsersListAdd(sender_user); } break; //Сообщения в канал case "chm": if (PageIsSet(message.Split('|')[3])!=null) { AddText(tabControl.TabPages["Chanel_tab_" + message.Split('|')[3]].Controls["Chanel_rtb_" + message.Split('|')[3]] as RichTextBox, message.Split('|')[4] + "\n", "user", sender_user.ID); } break; //Рисование case "d": if (sender_user.ID != me.ID) { int x1 = Convert.ToInt32(message.Split('|')[3]); int y1 = Convert.ToInt32(message.Split('|')[4]); int x2 = Convert.ToInt32(message.Split('|')[5]); int y2 = Convert.ToInt32(message.Split('|')[6]); switch (message.Split('|')[7]) { case "p": PaintLINE(x1, y1, x2, y2, sender_user.P_Pen); break; case "l": PaintLINE(x1, y1, x2, y2, sender_user.P_Pen); break; case "e": PaintEllips(x1, y1, x2, y2, sender_user.P_Pen,sender_user.paint_type); break; case "r": PaintRectangle(x1, y1, x2, y2, sender_user.P_Pen, sender_user.paint_type); break; } PBboard.Refresh(); toolStripStatusLabel1.Text = "Последний 'художник' " + sender_user.name; } break; //Смена вида рисования case "pc": GetUserByID(sender_user.ID).P_Pen = sender_user.P_Pen; GetUserByID(sender_user.ID).paint_type = sender_user.paint_type; break; //Отчистка доски case "bc": PBboard.Image = Image.FromFile(Environment.CurrentDirectory + @"\white.bmp"); toolStripStatusLabel1.Text = "Последний 'художник' " + sender_user.name; break; #region knb //Предложение сыграть в игру КНБ case "g_knb": if (me.ID == (message.Split('|')[3])) { DialogResult d = MessageBox.Show(sender_user.name + " предлагает Вам сыграть в КНБ, высогласны?", "Предложение развлечься", MessageBoxButtons.YesNo); if (d == DialogResult.Yes) { SendData("g_knb_yes", "|" + sender_user.ID); f = new f_GameKNB(sender_user, me); f.Show(); } else { SendData("g_knb_no", "|" + sender_user.ID); } } break; //Пользователь согласился играть в КНБ case "g_knb_yes": if (me.ID == (message.Split('|')[3])) { f = new f_GameKNB(sender_user, me); f.Show(); } break; //Пользователь отказался играть в КНБ case "g_knb_no": if (me.ID == (message.Split('|')[3])) { MessageBox.Show(sender_user.name + " отказался играть с вами!"); } break; //Пользователь выбрал элемент КНБ case "g_knb_vybral": if (me.ID == (message.Split('|')[3]) || me.ID == sender_user.ID) { if (me.ID == (message.Split('|')[3])) { f.prot_vybor = (message.Split('|')[4]); f.l_K.Visible = false; f.l_N.Visible = false; f.l_B.Visible = false; } if (((f.my_vybor != "") && (me.ID == message.Split('|')[3])) || ((f.prot_vybor != "") && (me.ID == sender_user.ID))) { switch (f.prot_vybor) { case "K": f.l_choose.Image = arrok__chat.Properties.Resources.web; break; case "N": f.l_choose.Image = arrok__chat.Properties.Resources.cut; break; case "B": f.l_choose.Image = arrok__chat.Properties.Resources.copy; break; } if (((f.my_vybor == "K") && (f.prot_vybor == "N")) || ((f.my_vybor == "N") && (f.prot_vybor == "B")) || ((f.my_vybor == "B") && (f.prot_vybor == "K"))) { MessageBox.Show("Вы выйграли"); f.l_my_number.Text = (Convert.ToInt32(f.l_my_number.Text) + 1).ToString(); } else if (f.prot_vybor == f.my_vybor) { MessageBox.Show("Ничья"); f.l_my_number.Text = (Convert.ToInt32(f.l_my_number.Text) + 1).ToString(); f.l_prot_number.Text = (Convert.ToInt32(f.l_prot_number.Text) + 1).ToString(); } else { MessageBox.Show("Вы проиграли"); f.l_prot_number.Text = (Convert.ToInt32(f.l_prot_number.Text) + 1).ToString(); } f.l_K.Visible = true; f.l_N.Visible = true; f.l_B.Visible = true; f.l_choose.Image = arrok__chat.Properties.Resources.user; f.b_K.Visible = true; f.b_N.Visible = true; f.b_B.Visible = true; f.b_choose.BackgroundImage = arrok__chat.Properties.Resources.user; f.b_choose.Enabled = false; f.my_vybor = ""; f.prot_vybor = ""; } } break; #endregion } }
private void CreateSecretChat(CUser user) { if (PageIsSet(user) != null) { tabControl.SelectedTab = PageIsSet(user); } else { this.WriteLog("***** Начало журнала (" + DateTime.Now + ") *****", user.name,true); tabControl.TabPages.Add(SecretChatPage(user)); tabControl.SelectTab("tab" + user.ID); SendData("nsc", "|" + user.ID); } textMessage.Focus(); }
private void UsersListAdd(CUser new_user) { users.Add(new_user); users_listbox.Items.Add(new_user.name); if (new_user.ID == me.ID) users[0] = me; users_label.Text = "Пользователи: " + users_listbox.Items.Count; }