UDP

namespace UDPServer
{
    public partial class Form1 : Form
    {
     
        UdpClient uc; //声明UDPClient
        //UdpClient uc2;
        public Form1()
        {
          
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            uc = new UdpClient(); //初始化
            uc.Connect(IPAddress.Parse("192.168.1.41"), 8888);
            //uc2 = new UdpClient();
            //uc2.Connect(IPAddress.Parse("192.168.1.41"), 7777);
            for (int i = 0; i < 100; i++)
            {
                string temp = Convert.ToString(i);
                //"由于UDP在发送数据前不需要与对方建立连接123";
                //string temp = this.textBox1.Text; //保存TextBox文本
                //将该文本转化为字节数组
                byte[] b = System.Text.Encoding.UTF8.GetBytes(temp);
                //向本机的8888端口发送数据
             
                uc.Send(b, b.Length);
                int sum = 0;
                for (int m = 0; m < 1000; m++)
                {
                    sum += m;
                }
                label1.Text = i.ToString();
                Application.DoEvents();
              

            }
                         
                            
        }
    

        private void button2_Click(object sender, EventArgs e)
        {
            label1.Text =DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
        
            uc = new UdpClient(); //初始化
            uc.Connect(IPAddress.Parse("192.168.1.41"), 7777);
            DateTime date = DateTime.Now;
            string temp = this.textBox1.Text; //保存TextBox文本
            //将该文本转化为字节数组
            byte[] b = System.Text.Encoding.UTF8.GetBytes(date.ToString("yyyy-MM-dd HH:mm:ss"));
            byte[] b1 = System.Text.Encoding.UTF8.GetBytes("123456");
            byte []b2=new byte[100];

            int tempint = 1000000;
            double tempdouble = 100000000.0001;
            byte[] b3 = System.BitConverter.GetBytes(tempdouble);
            byte[] b4 = System.BitConverter.GetBytes(tempint);
          
           // b2[0] = 32;


            b3.CopyTo(b2, 0);
            b4.CopyTo(b2, 8);
            b.CopyTo(b2, 12);


            string sendtext = "";
            sendtext = temp + "|" + tempint.ToString() + "|" + tempdouble.ToString();
            byte[] bsend = System.Text.Encoding.UTF8.GetBytes(sendtext);
            byte[] bb = System.Text.Encoding.UTF8.GetBytes(temp);

            //向本机的7777端口发送数据

            uc.Send(bsend , bsend.Length);
        }
    }


}

namespace Listener
{
    public partial class frmMain : Form
    {
        private UdpClient _client;
        private Thread _thread;

        private delegate void AddTxt(String txt);

        public frmMain()
        {
            InitializeComponent();
        }

        private void btnListen_Click(object sender, EventArgs e)
        {
            lvInfo.Items.Add("Start");

            _thread = new Thread(new ThreadStart(Listen));

            _thread.Start();
        }

        private void Listen()
        {

            try
            {
                //在本机指定的端口接收
                //IPEndPoint iepe = new IPEndPoint(IPAddress.Parse("10.2.4.70"), Convert.ToInt32(txtPort.Text.Trim()));
                IPEndPoint iepe = new IPEndPoint(IPAddress.Parse("192.168.1.41"), Convert.ToInt32(txtPort.Text.Trim()));

                _client = new UdpClient(iepe);
                IPEndPoint remote = new IPEndPoint(IPAddress.Any, 0);
                //接收从远程主机发送过来的信息
                while (true)
                {
                    //add txt
                    AddTxt at = new AddTxt(AddItem);

                    //ref表示引用类型的 IPPoint实例接收消息
                    Byte[] receiveBytes = _client.Receive(ref remote);
                    this.BeginInvoke(at,receiveBytes.Length.ToString());
                   // this.BeginInvoke(at,System.Text.Encoding.UTF8.GetString(receiveBytes));

                    //for (int i = 0; i < receiveBytes.Length; i++)
                    //{
                    //    this.BeginInvoke(at, receiveBytes[i].ToString());
                    //}
                    string recevedtext = System.Text.Encoding.UTF8.GetString(receiveBytes);
                    string[] receved = recevedtext.Split('|');
                    string ss0 = receved[0].ToString();
                    int ss1 = Convert.ToInt32(receved[1]);
                    double ss2 = Convert.ToDouble(receved[2]);

                    this.BeginInvoke(at, ss0);
                    this.BeginInvoke(at, ss1.ToString());
                    this.BeginInvoke(at, ss2.ToString());

                       }
            }
            catch (Exception ex)
            {
                AddTxt at = new AddTxt(AddItem);

                this.BeginInvoke(at, ex.Message.ToString());

            }
        }

        private void AddItem(String txt)
        {
            lvInfo.Items.Add(txt);
        }

        private void btnClose_Click(object sender, EventArgs e)
        {
            _client.Close();

            _thread.Abort();

            lvInfo.Items.Add("End");
        }


    }
}

posted on 2011-06-20 09:34  缘来  阅读(406)  评论(0)    收藏  举报

导航