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

📄 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 partial class Form1 : Form
    {
       // private string userName;//需要改
        private Talker talker;
     
        public Form1()
        {    
            InitializeComponent();
            talker = new Talker();
            talker.ClientConnected +=new ClientConnectedEventHandler(talker_ClientConnected);
        
                     
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            richTextBox1.Text = Application.StartupPath + "\\Image\\21.jpg";
            TreeNode node1 = new TreeNode("当前在线人");
           // node1.ImageIndex = 20;
            treeView1.Nodes.Add(node1);
       
            node1.Expand();
            TreeNode node2 = new TreeNode("当前群信息");
           // node2.ImageIndex = 20;
            treeView1.Nodes.Add(node2);
            //查找在线人数

            Thread fh = new Thread(new ThreadStart(findhosts));
            fh.IsBackground = true;
            fh.Start();
            //用广播包发布个人上线信息
            Thread advertise = new Thread(new ThreadStart(srvradvertise));
            advertise.IsBackground = true;
            advertise.Start();
            //接受广播信息
            Thread acceptadvertise = new Thread(new ThreadStart(acceptservermessage));
            acceptadvertise.IsBackground = true;
            acceptadvertise.Start();
        }

        void talker_ClientConnected(IPEndPoint endPoint) //当有客户和你说话时。。。。。。。。。
        {
           // ClientConnectedEventHandler del = delegate(IPEndPoint end)
          
               // IPHostEntry host = Dns.GetHostEntry(endp .Address);
              string host = endPoint.ToString();
               string title=host + "要和你聊天";               
                   onechat onechat1 = new onechat(title);
                   onechat1.Show();
               

              //  txtContent.Text += String.Format("System[{0}]:\r\n远程主机{1}连接至本地。\r\n", DateTime.Now, end);
           
         //   txtContent.Invoke(del, endPoint);
        }


      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 = Encoding.ASCII.GetString(data, 0, recv);
                string entry = ep.ToString();
                if (!isexit(entry))
                    addcurrentnewnode(entry);
                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 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";
        }


        void srvradvertise()
        {
            Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            server.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1);           
            IPEndPoint iep = new IPEndPoint(IPAddress.Broadcast, 9051);//也可以IPAddress .Parse ("192.168.1.255")
            byte[] hostname = Encoding.ASCII.GetBytes(Dns.GetHostName());
            while (true)
            {
                server.SendTo(hostname, iep);
                Thread.Sleep(6000);
                // label1.Text = Dns.GetHostName();

            }


        }

        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)
        {
            Application.Exit();
        }

        private void treeView1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
                    
            if ((treeView1 .SelectedNode .Text )==treeView1 .Nodes [0].Nodes [0].Text  )

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

                //群信息
                return;

            else if (treeView1.SelectedNode.Parent.Text == "当前在线人")
            {
                
                string ip;
                int port;
                getherip(treeView1 .SelectedNode .Text  ,out ip, out port);
                
               
                    if (talker.ConnectByIp(ip, port))
                    {
                        
                        onechat chat1 = new onechat("现在和" + treeView1.SelectedNode.Text + "聊天", treeView1.SelectedNode.Text);
                        chat1.Show();
                    }
                    else
                    {
                        MessageBox.Show("远程主机不存在,或者拒绝连接!");
                    }                             
            }

        }

        


        public void getherip(string str, out string ip,out int port)
        {
            string[] herinfo = str.Split(':');
            ip = herinfo[0];
            port = 9053;


        }


    }
}

⌨️ 快捷键说明

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