2014-06-23 63 views
0

我正在Linux平臺上進行一些編程。使用write()系統調用發送UDP廣播

我想做一個UDP廣播。

我設置套接字選項SO_BROADCAST,當我調用sendto()系統調用它完美地發送廣播,但是當我使用bind()綁定套接字描述與目的地址和調用write()系統調用,它提出了一個錯誤信息:

Destination address required 

請給我一些建議,謝謝!

+1

'bind()'用於設置源,即綁定到您想讓數據發送出去的本地接口。 'bind()'不用於定義目標地址。 – alk

+0

無論如何,使用'sendto()'有什麼問題? – EJP

回答

2

bind()不設置目標地址,它設置本地(源)地址。

您需要使用connect()來建立目標地址。

UDP是當然無連接的,但調用connect()將允許您將套接字與遠程地址相關聯 - 這允許您在套接字上使用write()和send()。但是,套接字將只接受來自您在connect()中指定的地址的傳入消息 - 這可能不是廣播流量所期望的,因爲絕不應該有來自廣播地址的消息