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

📄 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.IO;
using System.Xml;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace mychatserver
{
    public delegate void OutDelegate(string text);

    public partial class Form1 : Form
    {
        IOxml xml1;
        public Form1()
        {

            InitializeComponent();
            xml1 = new IOxml();
            control1 = new controlserver();  
        }

      static controlserver control1;
        Thread addnewthread;
        Thread sendmessage;
        private void Form1_Load(object sender, EventArgs e)
        {
            
        }

        private void button4_Click(object sender, EventArgs e)
        {
          string ip = textBox2.Text;
          int port =Convert .ToInt32 ( textBox3.Text);
            xml1.create(ip , port );

        }

        private void serverforuser()//转发程序
        {
           while (true )

            {
          int recv=0;
          byte[] data = new byte[1024];
          string stringdata = null;
          IPEndPoint ipep = new IPEndPoint(IPAddress.Parse(xml1 .GetIP ()),9053);
          Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
          newsock.Bind(ipep);
          IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
          EndPoint Remote = (EndPoint)sender;
          recv = newsock.ReceiveFrom(data, ref Remote);  
         stringdata =Encoding .Unicode .GetString (data,0,recv);
         int a=stringdata .IndexOf (":");
         string str2 = stringdata.Substring(0, a);
         string str3 = stringdata.Substring(a + 1);
         byte[] b = Encoding.Unicode.GetBytes(str3);
         newsock.SendTo(b, b.Length , SocketFlags.None,(EndPoint) controlserver.usertable[str2]);
         newsock.Close();
            }
        }

      
        private void button1_Click(object sender, EventArgs e)//启动服务器
        {
           
            control1.havenewuser = new OutDelegate(addcurrentnewclient);
            addnewthread=new Thread (new ThreadStart (control1.startserver));
            addnewthread.IsBackground = true;
            addnewthread.Start();
            sendmessage = new Thread(new ThreadStart(serverforuser));
            sendmessage.IsBackground = true;
            sendmessage.Start();
            button1.Enabled = false;
            button2.Enabled = true;
        }

     public void addcurrentnewclient(string str)
        {
            if (this.listBox1 .InvokeRequired)
            {

                OutDelegate outdelgate = new OutDelegate(addcurrentnewclient);
                this.listBox1 .Invoke(outdelgate, new object[] { str });
                return;
            }
            this.listBox1.Items.Add(str);

        }

     private void button2_Click(object sender, EventArgs e)
     {
         if (addnewthread != null)
         {
             addnewthread.Abort();
             sendmessage.Abort();
             control1.client.Stop();
         }
         button1.Enabled = true;
         button2.Enabled = false;
         
     }

     private void button3_Click(object sender, EventArgs e) //广播
     {

       string content= textBox1.Text;
       Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
       server.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1);
       IPEndPoint iep = new IPEndPoint(IPAddress.Broadcast, 9052);//也可以IPAddress .Parse ("192.168.1.255")
       byte[] messagecontent = Encoding.Unicode .GetBytes (textBox1 .Text );
       server.SendTo(messagecontent , iep);
       server.Close();
     }

     private void Form1_FormClosing(object sender, FormClosingEventArgs e)
     {
         if (control1 .client !=null )
         control1.client.Stop();
         Application.Exit();

     }

     private void button5_Click(object sender, EventArgs e)
     {
         listBox1.Items.Clear();
     }

       

    }
}

⌨️ 快捷键说明

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