對於UDP的一些心得


最近電信那個平台差不多要結束了。其中udp進行總結一下。很簡單。

對於程序,你想接收UDP還是發送UDP都必須建立一個
System.Net.Sockets.UdpClient。

建立這個對象時需要配置其ip地址及其端口。 一般通過

System.Net.Sockets.UdpClient udpClient = new System.Net.Sockets.UdpClient(new System.Net.IPEndPoint(System.Net.IPAddress.Parse( " 127.0.0.1 " ),  9000 ))
實現。IPEndPoint是C#網絡節點類,其包括IP地址與端口。

 

完了之后還需要配置收發緩存:(如果有數據溢出了緩存,結果,自己想)

            udpClient.Client.ReceiveBufferSize  =   2   *   1024   *   1024 ;
            udpClient.Client.SendBufferSize 
=   2   *   1024   *   1024 ;

 

完事了就開始進行收發了。

發送:
發送需要將數據裝換為Byte[]類型(我不喜歡叫它數組,就像字符串我們從來不叫它數組一樣),一般通過它實現

byte [] sendByte  =  System.Text.Encoding.Default.GetBytes(MSG_CONTENT);
下面就是把這些二進制位送到網線那頭去。
 udpClient.Send(sendByte, sendByte.Length,  new  System.Net.IPEndPoint(System.Net.IPAddress.Parse( " 127.0.0.1 " ),  9001 ));
這里說明一下,由於我在本機上實現的收發,所以用2個端口模擬收發的2頭,一個9000,一個是9001。
上面的話最后就是指向我要發送過去的地址。

 

接收:
接收更簡單:

            IPEndPoint iPEndPoint  =   null ;
            
byte [] receive;
            receive 
=  udpClient.Receive( ref  iPEndPoint);
            
// 讀取UDP端口內容
             string  receiver  =  System.Text.Encoding.Default.GetString(receive);
如果有人通過上面發送的方法給你發送了數據,你只要通過如上代碼接收就OK了。 iPEndPoint 就是告訴程序,誰發給我的,發件人地址。Receive是否具有接收事件我不清楚,我通過線程不停的進行讀取。順便說一下,如果沒有數據而執行了 Receive,那么當前的線程會被掛起,直到等到有人給這個端口發送了數據才會繼續執行(知道我為啥要用線程了吧)。


最后記得在使用后關閉連接,() 

 udpClient.Close();
我一般把udp作為主窗體類的一個成員變量——屬性,所以通常在主窗體類的close事件里執行此語句。呵呵。

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com