天天看點

winsock 收發廣播包使用UDP協定發送、接收廣播包的過程。

?廣播包的概念

廣播包通常為了如下兩個原因使用:1 一個應用程式希望在本地網絡中找到一個資源,而應用程式對于該資源的位址又沒有任何先驗的知識。

2 一些重要的功能,例如路由要求把它們的資訊發送給所有找到的鄰機。

被廣播資訊的目的位址取決于這一資訊将在何種網絡上廣播。Internet域中支援一個速記位址用于廣播-INADDR_BROADCAST。由于使

用廣播以前必須捆綁一個資料報套接口,是以所有收到的廣播消息都帶有發送者的位址和端口。

廣播通信是無連接配接的通信,通信前不需要建立連接配接。不需要listen和accept,但需要綁定一個socket用來接收廣播。

?廣播包的發送

建立socket

設定socket,例如設定逾時、允許廣播等

綁定socket。在使用廣播前必須綁定一個socket。這一步可有可無,如果沒有,系統自動綁定到一個未用端口。

發送廣播。廣播的端口号要和接收方綁定的端口号一緻

假如我們要向192.168.0.X,子網路遮罩為:255.255.255.0的子網中發送廣播包。

其步驟如下:

1.       初始化Winsock庫。

2.       建立SOCK_DIRAM類型的Socket。

3.       設定Socket的屬性允許其廣播。

4.       發送資料包到192.168.0.255

5.       接收自己廣播的廣播包。

6.       關閉Socket

7.       釋放網絡庫。

注意事項如下:

1.       接收方一定要知道廣播方的口号,然後綁定此端口号才能正确接收。

2.       接收方的Socket不需要設定成廣播屬性。

3.       綁定的IP不可以使用“127.0.0.1”,可以使用真實IP位址或者INADDR_ANY。否則接收失敗。

?接收廣播包

接收方一定要知道廣播方的端口号,然後綁定同樣的端口号才能正确接收。道理很簡單,如果不綁定到一個端口,它不知道到哪裡接收資料。

繼續閱讀