Example #1
0
 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 = "Ожидание...";
 }
Example #2
0
 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 = "Ожидание...";
 }
Example #3
0
        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;
        }
Example #4
0
 public f_GameKNB(CUser user_protiv, CUser user_me)
 {
     InitializeComponent();
     protiv = user_protiv;
     me = user_me;
 }
Example #5
0
 private TabPage PageIsSet(CUser user)
 {
     foreach (TabPage tp in tabControl.TabPages)
     {
         if (tp.Name == "tab" + user.ID) { return tp; }
     }
     return null;
 }
Example #6
0
        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();
        }
Example #7
0
        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

            }
        }
Example #8
0
 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();
 }
Example #9
0
 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;
 }