⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.cs

📁 C常用算法程序集,一部比较经典的程序算法合集
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Net;
using System.Net.Sockets;

namespace mychat1
{
    public delegate void OutDelegate(string text);
    public delegate void ThisOutDelegate(string text, string her);
   
    public delegate void tipmessage(bool nan,string str,string str1);

    public partial class Form1 : Form
    {
        private string hername = null;
        private string storedata = null;
        private string userName;//需要改
        private listener mylistener;
        public Form1(string username,string myownip)
        {
            InitializeComponent();         
            userName = username;
            string[] mine = myownip.Split(':');
            label2.Text += mine[0];
            label3.Text += mine[1];
            mylistener = new listener(myownip);
           
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            pictureBox1.ImageLocation = Application.StartupPath + "\\Image\\22.jpg";
            TreeNode node1 = new TreeNode("当前在线人");
            treeView1.Nodes.Add(node1);
            node1.Expand();
            TreeNode node2 = new TreeNode("当前群信息");
            treeView1.Nodes.Add(node2);
            //查找在线人数
            Thread fh = new Thread(new ThreadStart(findhosts));
            fh.IsBackground = true;
            fh.Start();
            //接受广播信息
            Thread acceptadvertise = new Thread(new ThreadStart(acceptservermessage));
            acceptadvertise.IsBackground = true;
            acceptadvertise.Start();
            //开始听
            mylistener.form1getserverdata = new ThisOutDelegate(get_serverdata);
            mylistener.changeform1();
            mylistener.StartListen();
        }

       void get_serverdata(string str,string her) //当有客户和你说话时。。。。。。。。。
        {
            tipmessage  del = delegate(bool nan,string str1,string str2)
            {
                timer1.Enabled = nan;
                storedata += str1;
                hername = str2;

            };
            this.Invoke(del,true,str,her);

        }


        public void findhosts()//获得在线信息
        {

            while (true)
            {
                Socket remotehosts = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
                IPEndPoint iep = new IPEndPoint(IPAddress.Any, 9051);
                EndPoint ep = (EndPoint)iep;
                remotehosts.Bind(iep);
                byte[] data = new byte[1024];
                int recv = remotehosts.ReceiveFrom(data, ref ep);
                string stringdata = userName + ":" + Encoding.Unicode.GetString(data, 0, recv);
                string[] all = stringdata.Split(':');
                if (all[1].Equals("退出服务器"))//除了此人
                    deletenode(all[2]);
                else
                {
                    for (int i = 0; i < all.Length - 1; i++)
                        if (!isexit(all[i]))
                            addcurrentnewnode(all[i]);
                }
                remotehosts.Close();
            }

        }

        bool isexit(string str)//检测用户是否上线
        {
            TreeNode trd = treeView1.Nodes[0];
            foreach (TreeNode td in trd.Nodes)
                if (td.Text == str)
                    return true;
            return false;
        }
        void deletenode(string str)  //删除用户
        {
            OutDelegate del = delegate(string str1)
            {


                TreeNode trd = treeView1.Nodes[0];
                if (isexit(str))
                {
                    foreach (TreeNode tr in trd.Nodes)
                        if (tr.Text.Equals(str))
                            trd.Nodes.Remove(tr);
                }
            };
            while (!this.IsHandleCreated)//在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke 及This.DialogResult 
            {
               
            }
            if (this != null)
                treeView1.Invoke(del, str);

        }


        void addcurrentnewnode(string str)
        {
            if (this.treeView1.InvokeRequired)
            {

                OutDelegate outdelgate = new OutDelegate(addcurrentnewnode);
                this.treeView1.Invoke(outdelgate, new object[] { str });
                return;
            }

            TreeNode newnode = new TreeNode(str);
            TreeNode trd = treeView1.Nodes[0];
            trd.Nodes.Add(newnode);

        }

        void addrichboxcontent(string str)
        {
            if (this.richTextBox1.InvokeRequired)
            {
                OutDelegate outdelgate = new OutDelegate(addrichboxcontent);
                this.richTextBox1.Invoke(outdelgate, new object[] { str });
                return;
            }
            richTextBox1.Text = richTextBox1.Text + str + "\r";
        }



        private void pictureBox1_Click(object sender, EventArgs e)
        {

        }

        private void groupBox4_Enter(object sender, EventArgs e)
        {

        }

        private void acceptservermessage()
        {
            while (true)
            {
                Socket remotehosts = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
                IPEndPoint iep = new IPEndPoint(IPAddress.Any, 9052);
                EndPoint ep = (EndPoint)iep;
                remotehosts.Bind(iep);
                byte[] data = new byte[1024];
                int recv = remotehosts.ReceiveFrom(data, ref ep);
                string stringdata = Encoding.Unicode.GetString(data, 0, recv);
                addrichboxcontent(stringdata);
                remotehosts.Close();
            }
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {

        }

        private void treeView1_MouseDoubleClick(object sender, MouseEventArgs e)
        {

            if ((treeView1.SelectedNode.Text).Equals(userName))
            {
                MessageBox.Show("你不能和自己聊天");
                return;
            }
            if (treeView1.SelectedNode.Text == "当前在线人")
                return;
            else if (treeView1.SelectedNode.Text == "当前群信息")

                //群信息
                return;

            else if (treeView1.SelectedNode.Parent.Text.Equals("当前在线人"))
            {
                (new onechat(treeView1.SelectedNode.Text,mylistener,userName,1)).Show();
            
            }

        }




      /*  public void getherip(string str, out string ip, out int port)
        {
            TcpClient server;
            string[] herinfo = null;
            try
            {
                server = new TcpClient(serverip, serverport);
                byte[] info = Encoding.Unicode.GetBytes(treeView1.SelectedNode.Text + ":her ip information");
                server.Client.Send(info);
                int recv = server.Client.Receive(info);
                string str1 = Encoding.Unicode.GetString(info, 0, recv);
                herinfo = str1.Split(':');
            }
            catch (SocketException)
            {
                MessageBox.Show("unable to connect to server!", "提示!", MessageBoxButtons.OK);
            }
            ip = herinfo[0];
            port = Convert.ToInt32(herinfo[1]);

        }*/

        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
          
            try
            {
                commonmethod.sendtoserver(this.userName + ":我下线了!");

            }
            catch (Exception e1)
            {
                MessageBox.Show(e1.Message , "提示!", MessageBoxButtons.OK);
                return;
            }

            try
            {
                mylistener.StopListen();
                Application.Exit();
            }
            catch
            {

            }
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            button5.Visible = true;
            if (button5.ForeColor == Color.Red)

                button5.ForeColor = Color.Black;
            else
                button5.ForeColor = Color.Red;
        }

        private void button5_Click(object sender, EventArgs e)
        {
            new onechat(storedata, mylistener,userName,hername).Show();
            timer1.Enabled = false;
            button5.Visible = false;
            storedata = null;
        }

        private void button3_Click(object sender, EventArgs e)
        {

        }


    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -