(整理)C#實現UDP廣播

 

(一) IP地址解析服務器

IP地址的類型:XXX.XXX.XXX.XXX
A類: 1.0.0.1--126.255.255.254 網絡

  • 最高位是0;
  • 1個字節的網絡地址和3個地址的主機地址
  • 測試地址:127.XXX.XXX.XXX

B類: 128.0.0.1--191.255.255.254測試

  • 最高位是10
  • 私有地址:172.16.0.0-172.31.255.254
  • 保留地址:169.254.X.X(自動的DHCP服務器)
  • 廣播地址:191.255.255.255

C類:       192.0.0.1--192.168.255.255url

  • 最高位110
  • 私有地址:192.168.0.1--192.168.255.255

D類:       224.0.0.1--239.255.255.255,最高位爲1110spa


E類:       240.0.0.1--255.255.255.254 ,最高位爲1111.net

受限廣播:255.255.255.255,用來將一個分組以廣播方式發送給本網絡中的全部主機,路由器則阻擋該分組經過,將其廣播功能限制在本網內部code

IPv6:  用8組16進制數表示,例如:2001:0db8:85a3:08d3:1319:8a2e:0370:7344是一個合法的IPv6地址。blog

    若是四個數字都是0,能夠被省略。例如:ip

             2001:0db8:85a3:0000:1319:8a2e:0370:7344路由

    等價於

             2001:0db8:85a3::1319:8a2e:0370:7344

    聽從這些規則,若是由於省略而出現了兩個以上的冒號的話,能夠壓縮爲一個,但這種零壓縮在地址中只能出現一次。所以:

    •   2001:0DB8:0000:0000:0000:0000:1428:57ab
    •   2001:0DB8:0000:0000:0000::1428:57ab
    •   2001:0DB8:0:0:0:1428:57ab
    •   2001:0DB8:0::0:1428:57ab
    •   2001:0DB8::1428:57ab

    都是合法的地址,而且他們是等價的。

IPv4轉IPv6:

             IPv4,135.75.43.52(87.4B.2B.34,十六進制爲0x874B2B34)

      IPv6,0000:0000:0000:0000:0000:0000:874B:2B34 或者::874B:2B34或者::135.75.43.52

(二)代碼

   來源:http://blog.csdn.net/adream307/article/details/8231222

using System;  
02.using System.Collections.Generic;  
03.using System.Linq;  
04.using System.Text;  
05.using System.Net;  
06.using System.Net.Sockets;  
07.using System.Threading;  
08.  
09.namespace Test  
10.{  
11.    class Program  
12.    {  
13.        static void Main(string[] args)  
14.        {  
15.            UdpClient client = new UdpClient(new IPEndPoint(IPAddress.Any, 0));  
16.            IPEndPoint endpoint = new IPEndPoint(IPAddress.Parse("255.255.255.255"), 7788);  
17.            byte[] buf = Encoding.Default.GetBytes("Hello from UDP broadcast");  
18.            Thread t = new Thread(new ThreadStart(RecvThread));  
19.            t.IsBackground = true;  
20.            t.Start();  
21.            while (true)  
22.            {  
23.                client.Send(buf, buf.Length, endpoint);  
24.                Thread.Sleep(1000);  
25.            }  
26.        }  
27.  
28.        static void RecvThread()  
29.        {  
30.            UdpClient client = new UdpClient(new IPEndPoint(IPAddress.Any, 7788));  
31.            IPEndPoint endpoint = new IPEndPoint(IPAddress.Any, 0);  
32.            while (true)  
33.            {  
34.                byte[] buf = client.Receive(ref endpoint);  
35.                string msg = Encoding.Default.GetString(buf);  
36.                Console.WriteLine(msg);  
37.            }  
38.        }  
39.    }  
40.} 

     實際測試中,255.255.255.255是受限的廣播(它不被路由發送,但會被送到相同物理網絡段上的全部主機),容易出現問題,建議改爲直接廣播地址,相似「192.168.1.255」(網絡廣播會被路由,並會發送到專門網絡上的每臺主機)。

  其它參考文章:

      http://baike.baidu.com/link?url=k-7RY6a-dnW931iLF5-zU6EKVi2utSwpud7E-xl90jYjXbyTMd7GL035CkD2lmPnSZoknPOUMdNIRl8ijNnxkK

  http://baike.baidu.com/link?url=CD1x3z6_4jOLTxsKxFQcBLMFH6U79nky5Cf3PAYS7zrPI0GqhYYOBMxvmbmnEZ94PaKeCDf_0cBDcFzaWmNUG_

  http://wenku.baidu.com/link?url=C4FV9Xr9t4tuP_EMvBzSkXhC4QaKjb0gGxGXlhknOlE8eIF0YpdLl2sM2180J2rUEV5sKpcjutDoZ3C4wQ9V2sqZzR_KZj1wQ1LMNn73WTe

      https://zh.wikipedia.org/wiki/IP地址

相關文章
相關標籤/搜索