Exemple #1
0
 public void end_voice_chat()
 {
     voice_state = false;
     thread_voice_chat.Abort();
     button_voicechat.Text = "音频";
     button_voicerefuse.Hide();
     P2P_Communication.Chat_Receive(socket_to_friend[0], this, true);
     P2P_Communication.Chat_Receive(socket_to_friend[0], this, true);
 }
Exemple #2
0
        //发消息
        private void button_send_Click(object sender, EventArgs e)
        {
            string send_message = null;

            if (send_state)//若为发消息
            {
                send_message = "info." + user_name[0] + ".";
            }
            else//发文件之前先通知其他用户
            {
                send_message = "file." + user_name[0] + ".";
                send_state   = false;
            }
            string show_message = user_name[0] + " " + DateTime.Now.ToString() + "\n" + textBox1.Text + "\n";
            string save_message = user_name[0] + "." + DateTime.Now.ToString() + "." + textBox1.Text;

            richTextBox1.SelectionAlignment = HorizontalAlignment.Left;
            richTextBox1.AppendText(show_message);
            new_msg.Add(save_message);

            for (int i = 0; i < chat_num; i++)
            {
                send_message = send_message + user_name[i + 1] + ".";
            }
            send_message = send_message + DateTime.Now.ToString() + "\n" + textBox1.Text + "\n";
            for (int i = 0; i < chat_num; i++)
            {
                if (!socket_to_friend[i].Connected)
                {
                    socket_to_friend[i] = P2P_Communication.Commun_Friend(user_name[i + 1], socket_to_server);
                    P2P_Communication.Chat_Receive(socket_to_friend[i], this, true);
                }
                P2P_Communication.Connect_Send(socket_to_friend[i], send_message);
            }

            textBox1.Clear();
            //socket_to_fri.Send(Encoding.ASCII.GetBytes(send_message));
        }
Exemple #3
0
 //拒绝语音聊天
 private void button_voicerefuse_Click(object sender, EventArgs e)
 {
     if (button_voicerefuse.Text == "拒绝")
     {
         string send_msg = "info." + user_name[0] + "." + DateTime.Now.ToString() + "\n" + "拒绝通话请求\n";
         P2P_Communication.Connect_Send(socket_to_friend[0], send_msg);
         button_voicechat.Text = "音频";
         button_voicerefuse.Hide();
     }
     else
     {
         voice_state = false;
         //end_voice_chat(socket_to_friend[0]);
         thread_voice_chat.Abort();
         string send_msg = "voiceend." + user_name[0] + "." + DateTime.Now.ToString() + "\n";
         P2P_Communication.Connect_Send(socket_to_friend[0], send_msg);
         P2P_Communication.Chat_Receive(socket_to_friend[0], this, true);
         P2P_Communication.Chat_Receive(socket_to_friend[0], this, true);
         button_voicechat.Text = "音频";
         button_voicerefuse.Hide();
         label5.Hide();
     }
 }
Exemple #4
0
        public Chat_Window(List <string> recv_msg, List <Socket> s, int num, int con_num)
        {
            InitializeComponent();
            connection       = My_Database.Connect_Database();
            socket_to_server = Server_Connection.Connect_Server();
            user_name        = recv_msg[0].Substring(5).Split('.').ToList();
            List <string> unconnect_name = new List <string>(user_name);

            unconnect_name.RemoveAt(0);
            chat_num = num;
            datapath = ".\\data\\" + user_name[0] + "\\";
            if (!Directory.Exists(datapath))
            {
                Directory.CreateDirectory(datapath);
            }
            //读入聊天记录
            recordpath = ".\\data\\" + user_name[0] + "\\";
            for (int i = 0; i < chat_num; i++)
            {
                recordpath = recordpath + user_name[i + 1];
            }
            recordpath = recordpath + ".txt";

            StreamReader sr = new StreamReader(new FileStream(recordpath, FileMode.OpenOrCreate));
            string       exist_record;

            while ((exist_record = sr.ReadLine()) != null)
            {
                string[] record_split = exist_record.Split('.');
                if (record_split.Length >= 3)
                {
                    if (record_split[0] == user_name[0])
                    {
                        richTextBox1.SelectionAlignment = HorizontalAlignment.Left;
                    }
                    else
                    {
                        richTextBox1.SelectionAlignment = HorizontalAlignment.Right;
                    }
                    string show_msg = record_split[0] + " " + record_split[1] + "\n" + record_split[2] + "\n";
                    richTextBox1.AppendText(show_msg);
                }
                else
                {
                    richTextBox1.AppendText(exist_record);
                }
            }
            sr.Close();
            //如果为接收消息方 显示消息
            for (int i = 0; i < recv_msg.Count(); i++)
            {
                string[] info = recv_msg[i].Split('.');
                if (info[0] == "info")
                {
                    //string recv_msg = fri_name + recv_str.Split('.')[2];
                    string show_msg = info[2] + " " + info[info.Length - 1];
                    richTextBox1.SelectionAlignment = HorizontalAlignment.Right;
                    richTextBox1.AppendText(show_msg);
                    new_msg.Add(show_msg);
                    if (i == 0)
                    {
                        unconnect_name.Remove(info[2]);
                        user_name.RemoveAt(user_name.Count() - 1);
                    }
                }
            }

            if (s.Count() != 0)
            {
                socket_to_friend = s;
                //已连接用户
                for (int j = 0; j < con_num; j++)
                {
                    string send_message = "onchat." + user_name[0];
                    P2P_Communication.Connect_Send(socket_to_friend[j], send_message);
                }
                for (int i = con_num; i < chat_num; i++)
                {
                    socket_to_friend.Add(P2P_Communication.Commun_Friend(unconnect_name[i - con_num], socket_to_server));

                    string send_message = "chat.";
                    for (int j = 0; j <= chat_num; j++)
                    {
                        send_message = send_message + user_name[j] + ".";
                    }
                    P2P_Communication.Connect_Send(socket_to_friend[i], send_message);
                }
            }
            else
            {
                for (int i = con_num; i < chat_num; i++)
                {
                    socket_to_friend.Add(P2P_Communication.Commun_Friend(unconnect_name[i - con_num], socket_to_server));
                    string send_message = "chat.";
                    for (int j = 0; j <= chat_num; j++)
                    {
                        send_message = send_message + user_name[j] + ".";
                    }
                    P2P_Communication.Connect_Send(socket_to_friend[i], send_message);
                }
            }
            //开始接受消息
            for (int i = 0; i < chat_num; i++)
            {
                P2P_Communication.Chat_Receive(socket_to_friend[i], this, true);
            }
            //控件初始化
            //如果为群聊
            if (chat_num > 1)
            {
                textBox_name.Text = findGroup(user_name);
            }
            string others = null;

            for (int i = 0; i < chat_num; i++)
            {
                others = others + user_name[i + 1] + "\n";
            }
            label3.Text = user_name[0];
            label4.Text = others;
            label5.Hide();
            button_fileaccept.Hide();
            button_filerefuse.Hide();
            button_voicerefuse.Hide();
            if (chat_num > 1)
            {
                button_voicechat.Enabled = false;
            }
            waveProvider   = new BufferedWaveProvider(new WaveFormat(8000, 16, WaveIn.GetCapabilities(0).Channels));
            recievedStream = new WaveOut();
            recievedStream.Init(waveProvider);
        }