UDPµã¶ÔµãÍøÂçͨÐÅ(ÔÀí¼°Ô´Âë)¡°ÀàËÆQQµÄÈí¼þ¡±µÄ±à³Ì1¡¢Ê²Ã´ÊÇUDPUDP£ºUserDatagramProtocol£¬ÊÇÒ»ÖÖ²»¿É¿¿µÄÊý¾Ý´«ÊäÐÒ飬ÄÜÌṩ±È½Ï¿ìËÙµÄÊý¾Ý´«ÊäËٶȣ¬µ«ÊDz¢²»±£Ö¤Êý¾ÝµÄÕýÈ·ÐÔ£»UDPÒ»°ãÓÃÔÚ²¢²»ÐèÒªÌرðÒªÇóÊý¾ÝÕýÈ·ÐÔµ«ÒªÇó´«ÊäËٶȱȽϿìËٵij¡ºÏ£¬±ÈÈçÍøÂç¹ã²¥¡¢Ó°Òô¸ñʽÊý¾ÝµÄ´«ÊäµÈ£»UDPÊÇÒ»ÖÖÎÞÁª»ú״̬µÄÊý¾Ý´«ÊäÐÒ飻ÔËÓÃUDPÍøÂç·þÎñµÄSocket³ÌÐò£¬²¢²»»áÒ»Ö±±£³ÖÁª»ú£¬Ö»ÓÐÔÚÐèÒªµÄʱºò£¬¿Í»§¶ËÓë·þÎñÆ÷¶Ë²Å»á½øÐÐÁª»ú£»2¡¢UdpClientÀàUdpClientÀà±»ÓÃÀ´ÌṩUDPÍøÂç·þÎñ¡£ÓÉÓÚUDPÕë¶ÔÖ÷»ú½øÐе¥ÏòÊý¾Ý²Ù×÷£¬ËùÓÐûÓжÔÓ¦µÄ·þÎñÆ÷¶ËÀࣻͬʱ,UdpClientÖ»¸ºÔðÊý¾ÝµÄ´«Ê䣬²¢²»ÔÚÒâÓÉË´«ËÍÊý¾Ý£»Òò´Ë£¬UdpClientÒ»¸öÀ࣬¾Í×ãÒÔ¹¹½¨UDP·þÎñËùÐèµÄ¹¦ÄÜ£»3¡¢UDPµÄÖ÷Òª·½·¨£ºReceive(refIPEndPointep)·½·¨£ºep²ÎÊý´ú±íËù½ÓÊÕÊý¾ÝµÄÔ¶³ÌÖ÷»ú£¬Ò²¾ÍÊÇÊý¾ÝµÄ·¢ËÍÖ÷»ú£»´Ë·½·¨·µ»ØËù½ÓÊÕµÄUDPÊý¾Ý£¬Îª×Ö½ÚÊý×é¡£´Ë·½·¨ÊÇ×èÈûʽ½ÓÊÕ·½·¨£¬Ò²¾ÍÊÇÒ»µ©Ö´Ðд˷½·¨£¬»áÔì³É³ÌÐòÖжϣ¬µÈ´ýÊý¾ÝµÄµ½À´£¬µÈÊý¾Ý½ÓÊÕÍê³Éºó£¬²Å¼ÌÐøÖ´Ðкó¼ÌµÄ³ÌÐò´úÂë¡£Send(byte[]buf,intlength,IPEndPointep)·½·¨£º´Ë·½·¨ÓÃÀ´ÏòÔ¶³ÌÖ÷»ú·¢ËÍÊý¾Ý£¬bufΪҪ·¢Ë͵ÄÊý¾Ý£¬×Ö½ÚÊý×飻lengthΪ·¢Ë͵ÄÊý¾ÝµÄ³¤¶È£»epΪҪ·¢Ë͵½µÄÔ¶³ÌÖ÷»ú¡£UDPClass´úÂ룺publicclassUDPClass{///summary///ίÍÐ////summary///paramname=data½ÓÊÕµ½µÄÊý¾Ý/param///paramname=ep¶Ô·½IPºÍ¶Ë¿Ú/parampublicdelegatevoidDataArriveHandler(byte[]data,IPEndPointep);publiceventDataArriveHandleronDataArrived;//onDataArrivedʼþÊÇÒ»ÖÖDataArriveHandlerίÍÐprivateUdpClientServer;privateThreadthread;//ÐÂÏ߳̽ÓÊÕÊý¾ÝprivateIPEndPointClientEp;//¶Ô·½Ö÷»ú¶Ë¿ÚºÅprivateintport=9980;//±¾»ú¼àÌý¶Ë¿ÚºÅpublicintPort{get{returnport;}set{port=value;}}///summary///¼àÌý£¬Æô¶¯Ï߳̿ªÊ¼ºǫ́»ñÈ¡Êý¾Ý////summarypublicvoidListen(){Server=newUdpClient(this.Port);thread=newThread(newThreadStart(GetData));thread.IsBackground=true;this.thread.Start();}///summary///»ñÈ¡Êý¾Ý////summaryprivatevoidGetData(){while(true){try{byte[]buf=Server.Receive(refClientEp);if(this.onDataArrived!=null)//ÅжÏÊÇ·ñÓë¿Í»§¶ËµÄ·½·¨°ó¶¨{onDataArrived(buf,ClientEp);}}catch(Exceptionex){}}}///summary///½«Êý¾Ý±¨·¢Ë͵½Ö¸¶¨ÖÕ½áµãµÄÖ÷»ú////summary///paramname=data×Ö½ÚÊý¾Ý/param///paramname=endpoint·¢Ë͵½ÍøÂçÉÏij¸öÖ÷»ú¶Ë¿Ú/parampublicvoidSend(byte[]data,IPEndPointendpoint){try{this.Server.Send(data,data.Length,endpoint);}catch(Exceptione){}}}µ÷ÓÃÒ³Ãæ´úÂ룺publicpartialclassForm1:Form{delegatevoidDataArrivalHandler(stringMsg);privateUDPClassudp;publicForm1(){InitializeComponent();}privatevoidDataArrival(stringMsg){this.txtReceive.Text+=Msg+\r\n;}privatevoidbtnListen_Click(objectsender,EventArgse){this.udp.Listen();}privatevoidForm1_Load(objectsender,EventArgse){this.udp=newUDPClass();this.udp.Port=9980;//½«onDataArrived×¢²áµ½Ê¼þudp.onDataArrivedthis.udp.onDataArrived+=newUDPClass.DataArriveHandler(onDataArrived);}privatevoidonDataArrived(byte[]data,IPEndPointep){stringMsg=ep.Address.ToString()+:+ep.Port.ToString()+\r\n+Encoding.Default.GetString(data);this.Invoke(newDataArrivalHandler(DataArrival),newobject[]{Msg});}privatevoidbtnSend_Click(objectsender,EventArgse){byte[]data=Encoding.Default.GetBytes(this.txtSend.Text);//½«Êý¾Ý±àÂë³Ébyte×Ö½ÚÊý×é//¶¨Òå½ÓÊն˵ÄIPºÍ¶Ë¿ÚºÅIPEndPointep=newIPEndPoint(IPAddress.Parse(192.168.133.211),9981);this.udp.Send(data,ep);}///summary///»ñÈ¡±¾»úµÄIPµØÖ·////summary///returns·µ»Ø×îºóÒ»¸öIPµØÖ·/returnsprivatestringGetIPAddress(){stringstr;stringResult=;stringhostname=Dns.GetHostName();//»ñÈ¡±¾µØµÄÖ÷»úÃûIPAddress[]myIP=Dns.GetHostAddresses(hostname);foreach(IPAddressaddressinmyIP){str=address.ToString();if(str.Contains('.'))Result=str;}returnResult;}}