精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美亚洲综合网| 国产精品自拍毛片| 在线日韩第一页| 在线观看视频你懂得| 欧美xxxbbb| 久久综合久久综合亚洲| 国产精品视频一区二区高潮| 杨钰莹一级淫片aaaaaa播放| 国产伦精品一区二区三区在线播放| 精品久久久久久久久久国产| 视频二区一区| 手机看片1024日韩| 久久国产视频网| 国内揄拍国内精品少妇国语| 亚洲精品视频网址| 国产在线播放精品| 欧美人妖巨大在线| 可以在线看的av网站| 色的视频在线免费看| www.欧美日韩| 国产一区二区丝袜| 国偷自拍第113页| 天天色综合色| 国产亚洲综合久久| 亚洲天堂美女视频| 不卡精品视频| 91福利在线看| 国产午夜伦鲁鲁| 亚洲小说区图片| 国产视频一区二区三区在线观看| 成人av蜜桃| 国产又粗又猛又爽又黄的视频一| 亚洲在线播放| 久久久久久久久久久av| 久久久99999| 欧美偷拍自拍| 亚洲老板91色精品久久| 日本天堂在线播放| 欧美国产亚洲精品| 欧美日韩国产小视频| 国产超级av在线| 高清电影在线观看免费| 国产精品视频免费| 日韩精品另类天天更新| 天堂中文在线官网| 粉嫩av一区二区三区| 成人xxxx视频| 亚洲手机在线观看| 日韩高清不卡在线| 国产成人短视频| 波多野结衣国产| 亚洲香蕉网站| 欧美日本精品在线| 手机在线免费看毛片| 久久国产精品亚洲人一区二区三区 | 久草在线资源福利站| 一区二区免费视频| 99热都是精品| 91香蕉在线观看| 亚洲精品视频在线观看免费| 日本在线视频www色| 国产在线观看91| 亚洲欧美日韩综合aⅴ视频| 在线免费观看成人| 日本电影在线观看网站| 国产精品网站在线播放| 亚洲精品免费在线看| h视频网站在线观看| 国产精品私房写真福利视频| 一区二区三区四区欧美日韩| 在线免费观看黄色网址| 中文字幕五月欧美| 中国女人做爰视频| 青草影视电视剧免费播放在线观看| 亚洲一区在线播放| 黄色一级片在线看| 午夜影视一区二区三区| 一本到三区不卡视频| a在线观看免费视频| 91精品福利观看| 亚洲精品在线电影| 91av在线免费| 欧美日韩中文一区二区| 久久成人精品电影| 日韩三级小视频| 视频一区二区三区在线| 成人性生交xxxxx网站| 亚洲国产精品久久久久久久| 久久综合久久鬼色中文字| 亚洲精品高清视频| 欧美大片黄色| 色狠狠桃花综合| 午夜天堂在线视频| 日本成人中文| 最新69国产成人精品视频免费 | 午夜成人免费电影| 91香蕉视频导航| 91成人入口| 国产一区二区三区精品久久久| 在线免费看av网站| 亚洲免费成人| 国产日产欧美a一级在线| 免费国产精品视频| 国产精品毛片久久久久久久| 丝袜人妻一区二区三区| 日韩一区二区三区免费| 日韩欧美999| jizz18女人| 精品视频自拍| 国产亚洲欧美日韩精品| 国产一二三四区| 另类激情亚洲| 亚洲a中文字幕| 欧洲视频在线免费观看| 一区二区三区四区在线免费观看| 国产成人无码精品久久久性色| 99riav视频一区二区| 精品毛片乱码1区2区3区| 少妇真人直播免费视频| 中文在线日韩| 人人爽久久涩噜噜噜网站| 亚洲第一第二区| 亚洲国产精品v| 91免费黄视频| 国产95亚洲| 亚洲天堂免费观看| 欧美成人三级在线观看| 欧美a级一区二区| 中文字幕亚洲一区| 欧美日韩国产区| 欧美日韩综合网| 免费人成在线观看播放视频| 亚洲高清免费观看| 中文字幕永久视频| 精品午夜电影| 久久这里有精品| 国产精品成人网站| 国产精品1024| 一本一本a久久| 亚洲第一av| 日韩一二三四区| 2019男人天堂| 99国产精品| 99蜜桃在线观看免费视频网站| а√资源新版在线天堂| 欧美性大战久久久久久久蜜臀| www.四虎在线| 欧美国产高清| 亚洲free性xxxx护士白浆| 在线观看二区| 黄色91在线观看| 久久久国产精品无码| 欧美午夜a级限制福利片| 成人国产在线激情| jyzzz在线观看视频| 婷婷综合在线观看| yy1111111| 亚洲精选国产| 国产v亚洲v天堂无码| 成人短视频在线| 欧美日本一区二区| 日韩成人毛片视频| 国内一区二区在线| 亚洲一区二区三区在线观看视频| 成人黄色免费短视频| 亚洲欧美日韩一区二区在线 | 亚洲三级在线观看| 亚洲欧美国产日韩综合| 日韩欧美高清在线播放| 成人国产精品日本在线| 国产写真视频在线观看| 欧美日韩国产一二三| 日本裸体美女视频| 日本欧美在线观看| 亚洲高清视频一区二区| 99久久久国产精品免费调教网站| 最近2019好看的中文字幕免费| 在线不卡免费视频| 国产精品久久久久aaaa樱花 | 国产真实夫妇交换视频| 国产成人av一区二区三区在线 | 国产吞精囗交久久久| 亚洲尤物精选| 日韩欧美精品久久| 日韩黄色在线| 久久av红桃一区二区小说| 精品人妻aV中文字幕乱码色欲 | 国产精品啪啪啪视频| 亚洲一区二区三区中文字幕在线观看 | 性欧美18一19性猛交| 婷婷开心激情综合| 色婷婷在线影院| 喷水一区二区三区| 免费观看国产视频在线| 国产日韩三级| 国产成人亚洲综合91精品| yourporn在线观看视频| 日韩精品一区二区三区蜜臀| 国产无人区码熟妇毛片多| 国产日韩欧美电影| 黄色片免费网址| 亚洲激情亚洲| 日韩欧美一区二区视频在线播放| 日韩国产大片| 97色在线观看免费视频| 看电影就来5566av视频在线播放| 欧美色成人综合| 国产真实乱人偷精品视频| 国产欧美综合在线| 亚洲一二区在线观看| 日韩一区二区久久| 黄色小视频大全| 亚洲理论电影| 91天堂在线视频| 啊啊啊久久久| 日韩一区视频在线| av网站免费播放| 欧美亚洲精品一区| 国产亚洲第一页| 欧美激情中文字幕一区二区| 日本成人在线免费观看| 久久午夜精品| 久久成人福利视频| 久久精品高清| 国产亚洲精品美女久久久m| 四虎地址8848精品| 欧美专区福利在线| 97影院秋霞午夜在线观看| 亚洲女同精品视频| 欧美 日韩 国产 精品| 色94色欧美sute亚洲线路一久| 日本熟妇乱子伦xxxx| 中文字幕一区在线| v8888av| 成人久久18免费网站麻豆| 四季av一区二区三区| 国产欧美大片| 国产91对白刺激露脸在线观看| 五月天久久久| 亚洲美女网站18| 九一成人免费视频| 精品国产一区二区三区四区精华| 91福利区在线观看| 日韩在线不卡| 日本不卡视频在线| 久久精品男人天堂av| 欧美三级日韩三级国产三级| 久久久精品免费视频| 精品一区二区国产| 在线免费观看av网| 国产又大又黄又粗| 超碰免费公开在线| 亚洲精品一区二区三区中文字幕| 亚洲色图视频网站| 特级特黄刘亦菲aaa级| 久久99国产精品免费网站| 激情视频免费网站| 日韩黄色片在线观看| 国产欧美在线一区| 香蕉久久夜色精品| 青青视频在线播放| 亚欧美中日韩视频| 日韩一级性生活片| 国产精品色网| 韩国日本在线视频| 噜噜噜在线观看免费视频日韩 | 猫咪在线永久网站| 精品视频—区二区三区免费| 成人1区2区3区| 亚洲第一黄色网| 天堂av2024| 亚洲精品乱码久久久久久金桔影视| 男人天堂av网| 亚洲精品国产精品国自产观看浪潮| 日本韩国在线观看| 亚洲精品乱码久久久久久按摩观| 深夜福利在线看| 亚洲激情 国产| 青梅竹马是消防员在线| 国产亚洲精品91在线| 91精品大全| 美女国内精品自产拍在线播放| 在线视频中文字幕第一页| 欧美激情免费视频| 美女在线视频免费| 国产精品第一第二| 亚洲男男av| 成人在线免费网站| 香蕉久久99| 亚洲国产精品视频一区| 99久久99久久精品国产片果冰| 热这里只有精品| 亚洲成人直播| 黄色影院一级片| 日日摸夜夜添夜夜添精品视频| 日韩av在线中文| 国模无码大尺度一区二区三区| 99re这里只有| 欧美国产一区在线| 欧美成欧美va| 欧美亚洲动漫另类| 欧美熟妇交换久久久久久分类| 精品视频中文字幕| 秋霞午夜在线观看| 久久久亚洲国产| 国产综合色在线观看| 国产精品丝袜高跟| 成人激情自拍| 色女人综合av| 国产精品99一区二区| 伊人成色综合网| 国产乱人伦精品一区二区在线观看| 亚洲中文字幕无码一区| 亚洲国产精品黑人久久久| 国产精品成人aaaa在线| 欧美日韩在线播放一区| 亚洲 精品 综合 精品 自拍| 爱福利视频一区| 在线观看特色大片免费视频| 成人免费看吃奶视频网站| 色天下一区二区三区| 成人小视频在线观看免费| 日韩激情一区二区| 中文字幕第九页| ...中文天堂在线一区| 国产嫩bbwbbw高潮| 日韩欧美黄色影院| 国产精品麻豆一区二区三区| 国内精品久久久久| 在线观看欧美| 日韩中文字幕av在线| 免费视频一区| 波多野结衣加勒比| 一区二区在线看| 一级特黄aaaaaa大片| 精品偷拍一区二区三区在线看| av中文字幕在线看| 亚洲影院色无极综合| 波多野结衣在线观看一区二区三区| 99在线免费视频观看| 国产精品影视在线| 日韩一区二区不卡视频| 欧美日韩三级一区二区| 免费在线超碰| 91成人性视频| 日韩高清一区| 久久人人爽人人爽人人av| 国产一区二区按摩在线观看| 国产传媒在线看| 一本到一区二区三区| 黄色三级网站在线观看| 久热精品视频在线| 99tv成人影院| 亚洲国产一区二区精品视频| 日韩福利视频网| 国产三级精品三级观看| 欧美日韩中文另类| 在线a免费看| 成人黄色激情网| 影视一区二区| 久久久国产精品久久久| 亚洲精品免费在线| 精品美女www爽爽爽视频| 萌白酱国产一区二区| 精品国产乱码久久久久久樱花| 小说区视频区图片区| 美女视频网站久久| 亚洲一级生活片| 欧美一二区视频| 黄色成人在线网| 国产亚洲精品美女久久久m| 久久免费黄色| jizz18女人高潮| 这里只有精品电影| 性欧美ⅴideo另类hd| 国内成+人亚洲| 久久国产主播| 999福利视频| 51精品国自产在线| 牛牛精品视频在线| 国产在线播放一区二区| 午夜在线视频观看日韩17c| av小说在线观看| 欧美精品第一页| 色呦呦在线免费观看| 国产一区精品在线| 视频一区国产视频| 色偷偷男人天堂| 精品久久久久久久人人人人传媒| 成av人片在线观看www| 欧美日韩综合精品| 免费在线观看一区二区三区| 国产一区二区精彩视频| 亚洲国产精品中文| 91国内外精品自在线播放| 香蕉视频免费版| 日本一区二区三区在线观看| 男人草女人视频| gogogogo高清视频在线| 性欧美大战久久久久久久久|