Exemplo n.º 1
0
        //关闭窗口
        private void button_close_Click(object sender, EventArgs e)
        {
            string send_message = "bye." + user_name[0];//发送离开聊天信息

            foreach (Socket socket in socket_to_friend)
            {
                if (!socket.Connected)
                {
                    continue;
                }
                P2P_Communication.Connect_Send(socket, send_message);
                Thread.Sleep(10);
                socket.Shutdown(SocketShutdown.Both);
                socket.Close();
            }
            //FileStream source_stream = new FileStream(recordpath, FileMode.OpenOrCreate, FileAccess.Write);
            socket_to_server.Shutdown(SocketShutdown.Both);
            socket_to_server.Close();
            //写入新的聊天记录
            StreamWriter sw = new StreamWriter(recordpath, true);

            foreach (string msg in new_msg)
            {
                string new_msg = msg.Replace("\n", ".");
                sw.WriteLine(new_msg);
            }
            sw.Close();
            this.Close();
        }
Exemplo n.º 2
0
        //通过好友申请
        private void button_approve_Click(object sender, EventArgs e)
        {
            string friend_name       = label2.Text.Split(' ')[0];
            Socket add_friend_socket = P2P_Communication.Commun_Friend(friend_name, client_socket);
            string send_msg          = "aa." + user_name;

            P2P_Communication.Connect_Send(add_friend_socket, send_msg);
            Thread.Sleep(10);
            add_friend_socket.Shutdown(SocketShutdown.Both);
            add_friend_socket.Close();
            label1.Hide();
            label2.Hide();
            button_approve.Hide();
            button_refuse.Hide();
            button_refuse.Enabled  = false;
            button_approve.Enabled = false;
            if (friend_list == null)
            {
                friend_list = friend_name;
            }
            else
            {
                friend_list = friend_list + "." + friend_name;
            }
            string update_text = "update friend_table set friend_list = '" + user_name + "." + friend_list + "' where username="******"online");
            listView1.Items.Add(new_item);
        }
Exemplo n.º 3
0
        //添加朋友
        private void button_addfriend_Click(object sender, EventArgs e)
        {
            string friend_name = textBox_friendname.Text;
            bool   state       = true;

            //判断是否已经是好友
            foreach (ListViewItem item in listView1.Items)
            {
                if (friend_name == item.Text)
                {
                    MessageBox.Show(this, "已经在好友列表中", "信息提示",
                                    MessageBoxButtons.OK, MessageBoxIcon.Information);
                    state = false;
                    break;
                }
            }
            //判断是否存在该账号
            if (state)
            {
                string recv_str = Server_Connection.Search_Friend(friend_name, client_socket);
                if (recv_str == "Incorrect No." || recv_str == "Please send the right message")
                {
                    MessageBox.Show(this, "用户不存在", "信息提示",
                                    MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    string search_text = "Select username from user_table where username="******"该用户还未注册", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                    else if (recv_str == "n")
                    {
                        MessageBox.Show(this, "该用户不在线,请稍后再试", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                    else
                    {
                        Socket add_friend_socket = P2P_Communication.Commun_Friend(friend_name, client_socket);
                        string send_msg          = "a." + user_name;
                        P2P_Communication.Connect_Send(add_friend_socket, send_msg);
                        Thread.Sleep(10);
                        add_friend_socket.Shutdown(SocketShutdown.Both);
                        add_friend_socket.Close();
                    }
                }
            }
        }
Exemplo n.º 4
0
        //拒绝好友申请
        private void button_refuse_Click(object sender, EventArgs e)
        {
            string friend_name       = label2.Text.Split(' ')[0];
            Socket add_friend_socket = P2P_Communication.Commun_Friend(friend_name, client_socket);
            string send_msg          = "ar." + user_name;

            P2P_Communication.Connect_Send(add_friend_socket, send_msg);
            Thread.Sleep(10);
            add_friend_socket.Shutdown(SocketShutdown.Both);
            add_friend_socket.Close();
            label1.Hide();
            label2.Hide();
            button_approve.Hide();
            button_refuse.Hide();
            button_refuse.Enabled  = false;
            button_approve.Enabled = false;
        }
Exemplo n.º 5
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));
        }
Exemplo n.º 6
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();
     }
 }
Exemplo n.º 7
0
 //发起语音聊天
 private void button_voicechat_Click(object sender, EventArgs e)
 {
     //发起语音
     if (button_voicechat.Text == "音频")
     {
         string send_msg = "voice." + user_name[0] + "." + DateTime.Now.ToString() + "\n";
         P2P_Communication.Connect_Send(socket_to_friend[0], send_msg);
     }
     //接听
     else
     {
         string send_msg = "voiceaccept." + user_name[0] + "." + DateTime.Now.ToString() + "\n";
         P2P_Communication.Connect_Send(socket_to_friend[0], send_msg);
         label5.Show();
         button_voicerefuse.Text = "挂断";
         //voice_socket = P2P_Communication.Commun_Friend(user_name[1], socket_to_server);
         //thread_voice_chat = new Thread(() => start_voice_chat(voice_socket));
         //voice_socket = P2P_Communication.Commun_Friend(user_name[1], socket_to_server);
         thread_voice_chat = new Thread(() => start_voice_chat(socket_to_friend[0]));
         thread_voice_chat.SetApartmentState(System.Threading.ApartmentState.STA);//单线程监听控制
         thread_voice_chat.IsBackground = true;
         thread_voice_chat.Start();
     }
 }
Exemplo n.º 8
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);
        }