Go如何發送廣播包

來源:互聯網
上載者:User

標籤:go語言   golang   網路   go   廣播   

網路資料包的發送分為三種方式,分別是單播、組播、廣播


廣播通俗地講,就是讓你的機器發送的資料包可以被同一個網路內的所有主機都接收到。


在講解如何發送廣播包之前,先來看看跟廣播有關的知識:

我們都知道IP地址的作用是用來在網路中定位某個網路介面的(沒錯,準確的講,IP並不是定位某一台主機)。我們通常見到的IP地址的形式都是如下這樣子的:

                    XXX.XXX.XXX.XXX

這種IP地址的形式叫做點分十進位標記法,其實IP是一個32位長的位元,以每8位為單位,共分成4個部分,也就是分成了4個位元組。


IP地址的組成方式是:  [網路號]+[主機號]

網路號是用來標識某個網路的,而主機號是用來標識網路中的某一台主機的(其實是主機上的某個介面)。


通常電腦發送一個資料包時會在資料包的頭部加上寄件者的IP地址,和接收者的IP地址。但是一般電腦發送資料包的時候,同一個網路內的所有主機都會收到這個資料包,但是只有那個自己的IP地址和資料包中的接收者的IP地址相同的那個電腦才會真正接收這個資料包。

如果要讓網路(同一網路)中的所有電腦都能收到這個資料包,就應該將這個資料包的接收者地址設定為這個網路中的最高的主機號。通常255.255.255.255就可以達到這個要求。所以我們如果要發送一次UDP廣播報文,就可以試試如下執行個體代碼:

package mainimport "net"func main() {// 這裡設定寄件者的IP地址,自己查看一下自己的IP自行設定laddr := net.UDPAddr{IP:   net.IPv4(192, 168, 137, 224),Port: 3000,}// 這裡設定接收者的IP地址為廣播位址raddr := net.UDPAddr{IP:   net.IPv4(255, 255, 255, 255),Port: 3000,}conn, err := net.DialUDP("udp", &laddr, &raddr)if err != nil {println(err.Error())return}conn.Write([]byte(`hello peers`))conn.Close()}


開啟WireShark,設定過濾規則為udp.port == 3000, 然後執行一下程式,就可以抓到我們發送的廣播包了:




如果轉載請註明出處:http://blog.csdn.net/gophers




相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.