UDP 服务端

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 UDPServer
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        //
        bool isTrue = false;
        //
        Thread thrRecv;

        UdpClient udpcRecv;
        //开始监听
        private void button1_Click(object sender, EventArgs e)
        {
            if (!isTrue)
            {
                IPEndPoint localIpep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8848);
                udpcRecv = new UdpClient(localIpep);
                thrRecv = new Thread(ReceiveMessage);
                thrRecv.Start();
                isTrue = true;
                ShowMessage(textBox1, "UDP监听器已经成功启动");
            }
            else
            {
                thrRecv.Abort();
                udpcRecv.Close();
                isTrue = false;
                ShowMessage(textBox1,"UDP监听器已经成功关闭");
            }
        }
        private void ReceiveMessage(object obj)
        {
            IPEndPoint remoteIPep = new IPEndPoint(IPAddress.Any,0);
            while (true)
            {
                try
                {
                    byte[] byteRecv = udpcRecv.Receive(ref remoteIPep);
                    string message = Encoding.Unicode.GetString(byteRecv, 0, byteRecv.Length);
                    ShowMessage(textBox1,string.Format("{0}{1}",remoteIPep,message));
                }
                catch (Exception ex)
                {
                    ShowMessage(textBox1, ex.Message);
                    break;
                }
 
            }
        }
        delegate void ShowMessageDelegate(TextBox txtbox, string message);
        private void ShowMessage(TextBox txtbox, string message)
        {
            if (txtbox.InvokeRequired)
            {
                ShowMessageDelegate showMessageDelegate = ShowMessage;
                txtbox.Invoke(showMessageDelegate, new object[] { txtbox, message });
            }
            else
            {
                txtbox.Text += message + "\r\n";
            }
        }
    }
}
View Code

 

posted @ 2018-01-18 23:06  (时光)光阴飞逝  阅读(141)  评论(0)    收藏  举报