using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;namespace WindowsApplication4
{
    public partial class Form1 : Form
    {
        public UdpClient server = new UdpClient(5566);
        static IPEndPoint myend = new IPEndPoint(Dns.GetHostEntry(Dns.GetHostName()).AddressList[0], 5566);
        public UdpClient client=new UdpClient(myend);
        Thread mythread;
        private ManualResetEvent myreset = new ManualResetEvent(false);         public Form1()
        {
            InitializeComponent();
        }        private void Form1_Load(object sender, EventArgs e)
        {
            mythread = new Thread(new ThreadStart(listenport));
            mythread.Start();
        }        private void sendinfo(IAsyncResult ia)
        {
            try
            {
                UdpClient tmpclient = (UdpClient)ia.AsyncState;
                int bytessent = tmpclient.EndSend(ia);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }        private void listenport()
        {
            while (true)
            {
                myreset.Reset();
                Application.DoEvents();
                try
                {
                    client.BeginReceive(new AsyncCallback(this.receiveinfo), client);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("出现错误:" + ex.Message.ToString());
                    break;
                }
                myreset.WaitOne();
            }
        }        private void receiveinfo(IAsyncResult ia)
        {
            myreset.Set();
            IPEndPoint romeend = new IPEndPoint(Dns.GetHostEntry(Dns.GetHostName()).AddressList[0], 5566);
            UdpClient tmplisten = (UdpClient)ia.AsyncState;
            try
            {
                byte[] buffer = tmplisten.EndReceive(ia, ref romeend);
                showinfo(buffer);
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }        private void showinfo(byte[] buffer)
        {
            MessageBox.Show(Encoding.BigEndianUnicode.GetString(buffer));
        }        private void button1_Click(object sender, EventArgs e)
        {
            IPEndPoint end = new IPEndPoint(IPAddress.Parse("255.255.255.255"), 5566);
            byte[] info = Encoding.BigEndianUnicode.GetBytes(textBox1.Text);
            try
            {
                client.BeginSend(info, info.Length, end, new AsyncCallback(sendinfo), client);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
}
以上程序如果我把public UdpClient server = new UdpClient(5566);这一句去掉就不能收到消息,请高手解释一下,谢了,