精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

C#網絡編程系列七:UDP編程補充

開發 后端
上次因為時間的關系,所以把上一個專題遺留下的一個問題在本專題中和大家分享下,本專題主要介紹下如何實現UDP廣播的程序,下面就直接介紹實現過程和代碼以及運行的結果。

上次因為時間的關系,所以把上一個專題遺留下的一個問題在本專題中和大家分享下,本專題主要介紹下如何實現UDP廣播的程序,下面就直接介紹實現過程和代碼以及運行的結果。

一、程序實現

UDP廣播程序的實現代碼:

  1. using System;  
  2. using System.Net;  
  3. using System.Net.Sockets;  
  4. using System.Text;  
  5. using System.Threading;  
  6. using System.Windows.Forms;  
  7. namespace UDPBroadcast  
  8. {  
  9.     /// <summary>  
  10.     /// 在界面上,用戶可以設置本地進程的IP地址和端口號,并將地址加入某個組播組;  
  11.     /// 可以輸入發送消息的目的組的地址,并且勾選“廣播”復選框將采用廣播的方式發送信息  
  12.     /// 在界面上點擊“接受按鈕”就啟動接收線程,這樣程序就可以接收廣播或組播的信息  
  13.     /// </summary>  
  14.     public partial class UdpBroadcasefrm : Form  
  15.     {  
  16.         private UdpClient sendUdpClient;  
  17.         private UdpClient receiveUdpClient;  
  18.         // 組播IP地址  
  19.         IPEndPoint broadcastIpEndPoint;  
  20.         public UdpBroadcasefrm()  
  21.         {  
  22.             InitializeComponent();  
  23.             IPAddress[] ips = Dns.GetHostAddresses(Dns.GetHostName());  
  24.             tbxlocalip.Text = ips[5].ToString();  
  25.             tbxlocalport.Text = "8002";  
  26.             // 默認組,組播地址是有范圍  
  27.             // 具體關于組播和廣播的介紹參照我上一篇博客UDP編程  
  28.             // 本地組播組  
  29.             tbxGroupIp.Text = "224.0.0.1";  
  30.             // 發送到的組播組  
  31.             tbxSendToGroupIp.Text = "224.0.0.1";  
  32.         }  
  33.  
  34.         // 設置加入組  
  35.         private void chkbxJoinGtoup_Click(object sender, EventArgs e)  
  36.         {  
  37.             if (chkbxJoinGtoup.Checked == true)  
  38.             {  
  39.                 tbxGroupIp.Enabled = false;  
  40.             }  
  41.             else 
  42.             {  
  43.                 tbxGroupIp.Enabled = true;  
  44.                 tbxGroupIp.Focus();  
  45.             }  
  46.         }  
  47.  
  48.         // 選擇發送模式后設置  
  49.         private void chkbxBroadcast_Click(object sender, EventArgs e)  
  50.         {  
  51.             if (chkbxBroadcast.Checked == true)  
  52.             {  
  53.                 tbxSendToGroupIp.Enabled = false;  
  54.             }  
  55.             else 
  56.             {  
  57.                 tbxSendToGroupIp.Enabled = true;  
  58.                 tbxSendToGroupIp.Focus();  
  59.             }  
  60.         }  
  61.  
  62.         // 發送消息  
  63.         private void btnSend_Click(object sender, EventArgs e)  
  64.         {  
  65.             if (tbxMessageSend.Text == "")  
  66.             {  
  67.                 MessageBox.Show("消息內容不能為空!","提示");  
  68.                 return;  
  69.             }  
  70.  
  71.             // 根據選擇的模式發送信息  
  72.             if (chkbxBroadcast.Checked == true)  
  73.             {  
  74.                 // 廣播模式(自動獲得子網中的IP廣播地址)  
  75.                 broadcastIpEndPoint = new IPEndPoint(IPAddress.Broadcast, 8002);  
  76.             }  
  77.             else 
  78.             {  
  79.                 // 組播模式  
  80.                 broadcastIpEndPoint = new IPEndPoint(IPAddress.Parse(tbxSendToGroupIp.Text), 8002);  
  81.             }  
  82.  
  83.             // 啟動發送線程發送消息  
  84.             Thread sendThread = new Thread(SendMessage);  
  85.             sendThread.Start(tbxMessageSend.Text);  
  86.         }  
  87.  
  88.         // 發送消息  
  89.         private void SendMessage(object obj)  
  90.         {  
  91.             string message = obj.ToString();  
  92.             byte[] messagebytes = Encoding.Unicode.GetBytes(message);  
  93.             sendUdpClient = new UdpClient();  
  94.             // 發送消息到組播或廣播地址  
  95.             sendUdpClient.Send(messagebytes, messagebytes.Length, broadcastIpEndPoint);  
  96.             sendUdpClient.Close();  
  97.               
  98.             // 清空編輯消息框  
  99.             ResetMessageText(tbxMessageSend);  
  100.         }  
  101.  
  102.         // 利用委托回調機制來實現界面上的消息清空操作  
  103.         delegate void ResetMessageTextCallBack(TextBox textbox);  
  104.         private void ResetMessageText(TextBox textbox)  
  105.         {  
  106.             if (textbox.InvokeRequired)  
  107.             {  
  108.                 ResetMessageTextCallBack resetMessageCallback = ResetMessageText;  
  109.                 textbox.Invoke(resetMessageCallback, new object[] { textbox });  
  110.             }  
  111.             else 
  112.             {  
  113.                 textbox.Clear();  
  114.                 textbox.Focus();  
  115.             }  
  116.         }  
  117.  
  118.         // 接收消息  
  119.         private void btnReceive_Click(object sender, EventArgs e)  
  120.         {  
  121.             chkbxJoinGtoup.Enabled = false;  
  122.             // 創建接收套接字  
  123.             IPAddress localIp = IPAddress.Parse(tbxlocalip.Text);  
  124.             IPEndPoint localIpEndPoint = new IPEndPoint(localIp, int.Parse(tbxlocalport.Text));  
  125.             receiveUdpClient = new UdpClient(localIpEndPoint);  
  126.             // 加入組播組  
  127.             if (chkbxJoinGtoup.Checked == true)  
  128.             {  
  129.                 receiveUdpClient.JoinMulticastGroup(IPAddress.Parse(tbxGroupIp.Text));  
  130.                 receiveUdpClient.Ttl = 50;  
  131.             }  
  132.             // 啟動接受線程  
  133.             Thread threadReceive = new Thread(ReceiveMessage);  
  134.             threadReceive.Start();  
  135.         }  
  136.  
  137.         // 接受消息方法  
  138.         private void ReceiveMessage()  
  139.         {  
  140.             IPEndPoint remoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);  
  141.             while (true)  
  142.             {  
  143.                 try 
  144.                 {  
  145.                     // 關閉receiveUdpClient時此時會產生異常  
  146.                     byte[] receiveBytes = receiveUdpClient.Receive(ref remoteIpEndPoint);  
  147.                     string receivemessage = Encoding.Unicode.GetString(receiveBytes);  
  148.  
  149.                     // 顯示消息內容  
  150.                     ShowMessage(lstMessageBox, string.Format("{0}[{1}]", remoteIpEndPoint, receivemessage));  
  151.                 }  
  152.                 catch 
  153.                 {  
  154.                     break;  
  155.                 }  
  156.             }  
  157.         }  
  158.         // 通過委托回調機制顯示消息內容  
  159.         delegate void ShowMessageCallBack(ListBox listbox,string text);  
  160.         private void ShowMessage(ListBox listbox, string text)  
  161.         {  
  162.             if (listbox.InvokeRequired)  
  163.             {  
  164.                 ShowMessageCallBack showmessageCallback = ShowMessage;  
  165.                 listbox.Invoke(showmessageCallback, new object[] { listbox, text });  
  166.             }  
  167.             else 
  168.             {  
  169.                 listbox.Items.Add(text);  
  170.                 listbox.SelectedIndex = listbox.Items.Count - 1;  
  171.                 listbox.ClearSelected();  
  172.             }  
  173.         }  
  174.  
  175.         // 清空消息列表  
  176.         private void btnClear_Click(object sender, EventArgs e)  
  177.         {  
  178.             lstMessageBox.Items.Clear();  
  179.         }  
  180.  
  181.         // 停止接收  
  182.         private void btnStop_Click(object sender, EventArgs e)  
  183.         {  
  184.             chkbxJoinGtoup.Enabled =true;  
  185.             receiveUdpClient.Close();  
  186.         }    
  187.     }  

廣播演示結果(接收端直接點接收按鈕后開啟接受線程,在發送端勾選“廣播選項”輸入發送信息點發送按鈕后的界面如下):

下面通過把接收端加入組后的結果,首先終止接收線程,然后勾選“加入組”復選框,然后單擊“接收”按鈕重新開啟接收線程,輸出結果如下:

從廣播演示的兩個情況可以看出廣播消息會同時向網上的一切進程轉發,無論這個進程是獨立的還是加入了某個組播組中的進程,都可以接收廣播消息

下面演示下組播的結果:

如果把接收端的組地址改為224.0.0.3時,此時發送端發送的消息“組播演示2”將不會發送到不同的組播地址,則接收端就接收不到此時的消息。

從組播結果中可以看出只有加入組播地址224.0.0.2的進程才能接收到信息。

需要注意的地方是:從前面的截圖中可以看出,不論是廣播還是組播,僅僅從收到的信息無從知道發送給它的進程的端口號,所以廣播和組播消息都是匿名發送,并且通過對UDP廣播和組播的理解可以簡單實現一個消息群發的功能(QQ的群里聊天就是這個原理)。

二、 總結

本專題主要是針對上一專題的補充——實現一個簡單的UDP廣播(組播)程序,通過這樣一個發送端可以發送給在組播地址中的所有用戶和所有子網中的所有用戶。本專題可以說是對UDP編程的一個擴充吧,希望大家看了本專題后可以對UDP協議有大致的理解。在下一個專題中會和大家介紹下P2P編程的相關知識。

 全部源碼地址:http://files.cnblogs.com/zhili/UDPBroadcast.zip

原文鏈接:http://www.cnblogs.com/zhili/archive/2012/09/03/UDPBroadcas.html

【編輯推薦】

  1. C#網絡編程系列一:網絡協議簡介
  2. C#網絡編程系列二:HTTP協議詳解
  3. C#網絡編程系列三:自定義Web服務器
  4. C#網絡編程系列四:自定義Web瀏覽器
  5. C#網絡編程系列五:TCP編程
  6. C#網絡編程系列六:UDP編程
  7. C#網絡編程系列八:P2P編程
  8. C#網絡編程系列九:類似QQ的即時通信程序
  9. C#網絡編程系列十:實現簡單的郵件收發器

 

責任編輯:張偉 來源: Learning hard的博客
相關推薦

2012-09-24 15:35:24

C#網絡協議UDP

2012-09-24 15:13:50

C#網絡協議TCP

2012-09-24 14:03:58

C#網絡協議C

2012-09-25 13:47:43

C#網絡協議P2P

2012-09-24 14:09:31

C#網絡協議C

2024-03-04 18:49:59

反射C#開發

2009-08-03 16:22:58

C#編程技巧

2009-08-21 14:03:04

C#網絡編程

2012-09-25 14:06:28

C#網絡協議

2012-09-24 14:43:51

C#網絡協議C

2012-09-24 14:31:55

C#網絡協議C

2012-09-25 15:02:50

C#網絡協議

2009-08-21 14:47:39

C#網絡編程

2009-08-21 17:19:36

C#網絡編程入門

2009-08-26 10:34:15

C#類型C#變量

2009-08-24 11:02:52

C#接口映射

2009-08-24 09:55:26

C#接口轉換

2011-04-13 17:31:16

C#.NET

2021-10-12 17:47:22

C# TAP異步

2009-08-25 17:13:57

C#串口編程
點贊
收藏

51CTO技術棧公眾號

99在线精品免费| 亚洲国产不卡| 91国偷自产一区二区三区成为亚洲经典| 国内外成人免费视频| 台湾佬中文在线| 日韩大片在线| 精品国产免费久久| www.欧美日本| 日本h片在线观看| 97国产一区二区| 成人久久久久爱| 国产小视频在线免费观看| 日韩免费特黄一二三区| 精品国产一区二区三区久久久蜜月 | 免费在线观看视频a| 国产三级视频在线看| 国产精品一二三四| 国产xxx69麻豆国语对白| 国产第一页精品| 国产精品美女在线观看直播| 欧美日韩一区二区欧美激情 | ass精品国模裸体欣赏pics| 日韩制服一区| 午夜精品福利一区二区三区蜜桃| 午夜精品区一区二区三| 亚洲精品综合久久| 麻豆精品视频在线观看免费| 韩国视频理论视频久久| 日韩av手机在线免费观看| 先锋影音国产精品| 精品剧情v国产在线观看在线| 国产又大又黄又猛| 在线观看网站免费入口在线观看国内| 亚洲精选视频在线| 天堂一区二区三区| 天堂网www中文在线| 国产真实乱对白精彩久久| 国产经典一区二区| 欧美三级午夜理伦| 韩国亚洲精品| 九九九热精品免费视频观看网站| 国产又粗又长又黄的视频| 国产精选一区| 亚洲女人被黑人巨大进入al| 亚洲av成人片色在线观看高潮| a一区二区三区亚洲| 欧美午夜精品久久久久久超碰| 少妇高清精品毛片在线视频| 亚洲精华液一区二区三区| 日韩伦理在线一区| 看黄网站在线观看| 久久国产婷婷国产香蕉| 国产va免费精品高清在线观看| 国产精品久久久免费视频| 很黄很黄激情成人| 欧美美女操人视频| 日韩三级在线观看视频| 99国产精品一区二区| 中文一区二区视频| 久久精品—区二区三区舞蹈| 久久99国产精一区二区三区| 亚洲摸下面视频| 波多野结衣一本| 国产麻豆精品久久| 亚洲图片在区色| 性猛交娇小69hd| 欧美三级美国一级| 综合久久五月天| 国产一二三av| 欧美va天堂在线| 欧美激情视频一区二区| 精品处破女学生| 99视频在线精品国自产拍免费观看| 国内精品美女av在线播放| 国产性70yerg老太| 国产视频一区在线观看一区免费| 91sao在线观看国产| 国产精品午夜影院| 日韩国产成人精品| 成人黄色生活片| av片免费播放| av午夜一区麻豆| 日韩成人av电影在线| sese在线视频| 亚洲美女一区二区三区| www.日本少妇| 亚洲黄色免费看| 欧美中文字幕一二三区视频| 在线观看av免费观看| 亚洲国产欧美国产第一区| 亚洲国产精品电影| 男人舔女人下部高潮全视频| 欧美激情欧美| 久久久久久久久亚洲| 国产成人一级片| 狠狠躁日日躁夜夜躁av| 青青草国产成人99久久| 国产在线观看不卡| 丰满少妇被猛烈进入| 久久亚洲免费视频| 中文字幕一区综合| 国产一二在线播放| 欧美色男人天堂| 美女搡bbb又爽又猛又黄www| 久草精品在线| 久久香蕉频线观| 国产精品视频免费播放| 精品制服美女久久| 国内精品视频在线播放| 欧美成人高清在线| 婷婷久久综合九色综合绿巨人 | 日韩免费视频一区二区| 性欧美13一14内谢| 午夜久久久久| 国产精品美女在线观看| 成人毛片在线免费观看| 国产欧美精品区一区二区三区| 8x8x华人在线| yw.尤物在线精品视频| 日韩欧美国产一二三区| 午夜在线观看一区| 亚洲狼人精品一区二区三区| 成人福利在线视频| 日本不卡免费播放| 亚洲精品成人天堂一二三| 日韩亚洲在线视频| 国产香蕉精品| 久久成人一区二区| 最近中文字幕在线免费观看| av高清久久久| 国产欧美精品aaaaaa片| 日韩午夜电影免费看| 亚洲欧美三级伦理| 日本三级片在线观看| 国产精品香蕉一区二区三区| 一区二区视频在线播放| 欧美成a人片在线观看久| 亚洲成人教育av| 色在线观看视频| 成人交换视频| 成人网在线免费视频| 久久亚洲高清| 国产理论电影在线| 日韩欧美电影一区| 国产97免费视频| 久久se精品一区精品二区| 欧洲精品久久| 成人香蕉视频| 日韩精品有码在线观看| 日韩精品一区二区av| 国产69精品久久777的优势| 中文字幕久精品免| 亚洲精品无播放器在线播放| 中文字幕无线精品亚洲乱码一区 | 国产视频一区免费看| 国产精品久久久久免费| 青草青在线视频| 欧美成人性战久久| 国产中文字幕免费| 99久久99久久久精品齐齐| 欧美精品久久久久久久免费| 加勒比色综合久久久久久久久| 欧美高清视频在线播放| 丰满熟妇乱又伦| 午夜免费久久看| 一区二区三区免费在线观看视频 | 亚洲欧美日本在线| 性生活在线视频| 欧美激情综合| 岛国视频一区免费观看| 91九色在线播放| 日韩久久免费电影| 无码人妻丰满熟妇区五十路| 欧美国产综合色视频| 国产乱女淫av麻豆国产| 欧美 日韩 国产一区二区在线视频| 91国产在线免费观看| 黄网站在线观| 精品调教chinesegay| 午夜精品免费观看| 亚洲欧美综合在线精品| 日本中文字幕精品| 性伦欧美刺激片在线观看| 日韩欧美亚洲在线| 亚洲一区有码| 麻豆91精品| 99久久精品无码一区二区毛片| 成人爽a毛片免费啪啪动漫| 亚洲精品xxxx| 糖心vlog精品一区二区| 亚洲美女少妇撒尿| 久久久午夜精品福利内容| 久久久久国产精品午夜一区| 亚洲午夜精品一区二区| 粉嫩av一区二区| 国产精品久久精品| 污视频网站在线免费| 日韩大片免费观看视频播放| 国产九色91回来了| 亚洲午夜电影在线| 中文国语毛片高清视频| 97aⅴ精品视频一二三区| 人人干人人干人人| 亚洲三级电影在线观看| 亚洲看片网站| 欧美xxxx在线| 亚洲xxxxx电影| 日韩高清成人| 欧美激情免费看| 97最新国自产拍视频在线完整在线看| 日韩免费在线观看| 青青艹在线观看| 亚洲777理论| 黑人操日本美女| 久久蜜臀中文字幕| 9.1在线观看免费| 麻豆成人综合网| 国产又黄又大又粗视频| 午夜精品免费| 午夜精品一区二区在线观看的| 成人性生交大片免费看中文视频| 国产精品日韩在线播放| 蜜桃视频动漫在线播放| 欧美精品在线看| av大片在线观看| 日韩激情在线视频| 懂色av蜜臀av粉嫩av分享吧| 欧美日韩免费一区二区三区| 7799精品视频天天看| 亚洲丶国产丶欧美一区二区三区| www深夜成人a√在线| 亚洲国产精品精华液ab| 久久精品成人av| fc2成人免费人成在线观看播放| 五月天六月丁香| 精品一区二区三区不卡 | 精品在线观看一区| 欧美78videosex性欧美| 欧洲av一区二区嗯嗯嗯啊| 国产精品久久久久久99| 亚洲国产日韩a在线播放| 色老板免费视频| 日韩美女视频一区二区| 国精产品久拍自产在线网站| 国产拍揄自揄精品视频麻豆| 日韩中文字幕有码| 久久久久久久精| 可以直接看的无码av| www.亚洲在线| chinese麻豆新拍video| 成人久久视频在线观看| 娇妻高潮浓精白浆xxⅹ| 播五月开心婷婷综合| 国产精品久久无码| 2024国产精品视频| 亚洲第一页av| 久久久久国色av免费看影院| 男女做爰猛烈刺激| 国产精品婷婷午夜在线观看| 91禁男男在线观看| 综合网在线视频| 91在线播放观看| 亚洲制服丝袜一区| 日韩伦理在线视频| 色综合久久久网| 中文字幕手机在线视频| 欧美综合色免费| 国产男女猛烈无遮挡| 日韩视频一区在线观看| 免费国产黄色片| 亚洲精品日韩丝袜精品| 成人精品一区二区三区免费 | caopen在线视频| 欧美精品在线观看| 麻豆视频在线看| 国产高清在线不卡| 午夜精品久久久久久毛片| 亚洲最大福利视频网站| 老司机精品视频在线播放| 欧美成ee人免费视频| 日韩久久久久| 日韩精品久久一区二区| 性欧美暴力猛交另类hd| 男女污污的视频| 国产麻豆精品久久一二三| 日韩精品人妻中文字幕有码| 欧美高清在线一区二区| 欧美日韩大片在线观看| 欧美午夜无遮挡| 国产一区二区女内射| 亚洲高清免费观看高清完整版| 你懂得网站在线| 欧美老女人性生活| 亚洲黄色中文字幕| 51国偷自产一区二区三区| av影片免费在线观看| 欧美—级在线免费片| 久久人人爽人人人人片| 国产精品视频在线看| 久久中文字幕无码| 欧美性感一区二区三区| 亚洲欧美高清视频| 日韩在线视频免费观看高清中文| 97久久人人超碰caoprom| 国产精品女主播视频| 亚洲图色一区二区三区| 相泽南亚洲一区二区在线播放 | 久久中文字幕电影| www.av免费| 欧洲日韩一区二区三区| 亚洲国产精品一| 日韩资源在线观看| 成人免费影院| 国产精品久久久久久久免费大片| 91亚洲成人| 久章草在线视频| 成人免费毛片嘿嘿连载视频| 中文字幕无码日韩专区免费| 一本久久综合亚洲鲁鲁五月天| wwwav网站| xxx欧美精品| av在线一区不卡| 欧美精彩一区二区三区| 激情亚洲网站| 日本一区二区三区在线免费观看| 欧美激情一区二区| 男女视频免费看| 精品乱码亚洲一区二区不卡| 超碰人人在线| 成人在线免费观看视视频| 日本道不卡免费一区| www黄色av| 91啪亚洲精品| 三级黄色在线视频| 精品国产一区二区亚洲人成毛片| h片在线免费观看| 国产又爽又黄的激情精品视频| 欧美艳星介绍134位艳星| 无码人妻h动漫| 久久天堂av综合合色蜜桃网| 国产一区二区99| 亚洲国产成人精品女人久久久 | 国产日韩在线精品av| 精品久久影视| www.国产区| 欧美国产激情一区二区三区蜜月 | 天堂蜜桃一区二区三区| 在线观看av中文字幕| 亚洲成人av在线电影| 免费看黄色一级视频| 久久久久久久激情视频| 岛国精品一区| 精品视频久久久久久| 性一交一乱一乱一视频| 久久6免费高清热精品| 日韩精品一级| 国产夫妻自拍一区| 99热国产精品| 中文字幕亚洲乱码熟女1区2区| 亚洲精品在线不卡| 性感美女一区二区在线观看| 亚洲成人在线视频网站| 狠狠色2019综合网| 在线免费观看亚洲视频| 精品国产三级电影在线观看| 538视频在线| 欧美一区二区高清在线观看| 日韩国产精品久久| 国产免费一区二区三区四区| 日韩欧美成人午夜| 欧美极品videos大乳护士| 日本不卡一区| 精品亚洲成a人| 久久综合成人网| 亚洲人成伊人成综合网久久久| 韩日一区二区| 国产成人免费高清视频| 成人高清伦理免费影院在线观看| 国产污污视频在线观看 | 中文字幕 自拍| 欧美精品一二三| heyzo高清在线| 欧美中日韩一区二区三区| 久久av资源网| 久久精品视频日本| 国产一区二区三区欧美| 97精品资源在线观看| 18禁网站免费无遮挡无码中文| 日本一区二区在线不卡| 精品国产无码AV| 欧美一级片免费在线| 91精品秘密在线观看| 亚洲国产第一区| 欧美另类久久久品| а√天堂8资源在线| 亚洲黄色成人久久久| 国产不卡视频一区二区三区| 无码人妻精品一区二区| 欧美成人网在线| 极品美女一区二区三区|