0
我正在Linux平臺上進行一些編程。使用write()系統調用發送UDP廣播
我想做一個UDP廣播。
我設置套接字選項SO_BROADCAST
,當我調用sendto()
系統調用它完美地發送廣播,但是當我使用bind()
綁定套接字描述與目的地址和調用write()
系統調用,它提出了一個錯誤信息:
Destination address required
請給我一些建議,謝謝!
我正在Linux平臺上進行一些編程。使用write()系統調用發送UDP廣播
我想做一個UDP廣播。
我設置套接字選項SO_BROADCAST
,當我調用sendto()
系統調用它完美地發送廣播,但是當我使用bind()
綁定套接字描述與目的地址和調用write()
系統調用,它提出了一個錯誤信息:
Destination address required
請給我一些建議,謝謝!
bind()不設置目標地址,它設置本地(源)地址。
您需要使用connect()來建立目標地址。
UDP是當然無連接的,但調用connect()將允許您將套接字與遠程地址相關聯 - 這允許您在套接字上使用write()和send()。但是,套接字將只接受來自您在connect()中指定的地址的傳入消息 - 這可能不是廣播流量所期望的,因爲絕不應該有來自廣播地址的消息。
'bind()'用於設置源,即綁定到您想讓數據發送出去的本地接口。 'bind()'不用於定義目標地址。 – alk
無論如何,使用'sendto()'有什麼問題? – EJP