2010-09-01 193 views
0

如果我使用sendto()使用UDP套接字廣播並立即調用recvfrom()。我收到前一段時間從同一臺PC發來的廣播信息?這可以迴避這種事情可以避免一些如何?任何解釋爲什麼我會遇到這種循環回來的事情?我的意思是廣播信息保留在本地n/w多久?UDP廣播問題?

回答

2

這是正常行爲。您需要了解UDP廣播的實際工作原理。您的本地PC與您正在廣播的網絡位於同一網絡中,因此它會接收它正在發送的廣播。你不能避免廣播被髮送回本地PC,但你可以做的是查看發送IP /端口recvfrom()報告並忽略該消息,如果它來自擁有廣播它的套接字的同一個進程。

否則,切換到Multicasting而不是UDP廣播(尤其是因爲IPv6中不支持UDP broacasting)。使用多播技術,接收方必須訂閱多播才能接收消息,因此根本沒有發送PC訂閱其自己的多播。