QtSDK中有一個關於網絡廣播的簡單例子。發送和接收廣播信息很容易。而在接收端,我想知道我剛收到的廣播包。我在readyRead信號回調函數中嘗試QUdpSocket.peerName(),但是我得到了空字符串。任何線索?Qt網絡廣播問題:獲取發件人IP
回答
從文檔:
返回同位體的名稱如由connectToHost(指定),或者如果connectToHost一個空的QString()沒有被調用。
所以,如果你叫connectToHost()
你應該得到一個結果。您也可以嘗試peerAddress()。除非你總是通過名字連接,否則我不會指望你總是能夠進行反向查詢並獲得一個名字。
我應該在readyRead信號插槽中調用connectToHost()? – catinred 2011-05-03 15:00:47
當您使用QUdpSocket::readDatagram()讀取數據包時,您可以檢索發件人的IP地址。您需要將指針傳遞給readDatagram()的QHostAddress在其中存儲地址:
QHostAddress senderAddress;
yourSocket->readDatagram(&data, size, &senderAddress);
// senderAddress now represents the sender address
如果你需要,請參閱文檔QHostAddress你可以得到的地址從senderAddress爲QString或整數。
如果你想要一個主機名,你可以使用QHostInfo做反向查找(但不能保證獲得一個名稱)。
在socket-> readDatagram之後,QString ip = socket-> peerAddress()。toString();我得到空字符串。 – catinred 2011-05-03 14:59:45
@cantinred編輯。您需要傳遞readDatagram()指向要存儲地址的QHostAddress的指針。 – Leiaz 2011-05-03 15:29:12
@Leiaz它不起作用。接收廣播數據包時,您獲得的地址(位於senderAddress中)爲0.0.0.0。我認爲它也可以工作,但是要麼是Qt做了一些愚蠢的事情,要麼Linux的底層套接字實現爲您提供了一個空的接收廣播數據包的源地址。 – doug65536 2013-05-19 11:24:26
- 1. 從發件人獲取IP
- 2. 如何獲取所需廣播地址的發件人IP:端口組合?
- 3. 如何從IP網絡攝像頭捕獲和廣播MJPEG流
- 4. 發送廣播包問題
- 5. vb.net UDP廣播顯示來自發件人的IP
- 6. 從組播數據包獲取發件人IP
- 7. 網絡UDP廣播設計?
- 8. 網絡廣播 - 燈塔-V1
- 9. 廣播對等網絡
- 10. 我在廣播獲取的問題,聽取事件
- 11. 安卓網絡改變廣播接收器和獲取網絡類型
- 12. Gridview與廣播列,廣播id問題
- 13. NFC廣播問題
- 14. UDP廣播問題?
- 15. Angular $廣播問題
- 16. UDP廣播問題
- 17. 在android網絡上獲取個人電腦的IP地址
- 18. 獲取無線網絡地址問題
- 19. 網絡信息android ip倒置問題
- 20. 如何從IP地址和子網中確定網絡IP,網關和廣播IP?
- 21. 如何使用IP上的IP和CIDR來計算網絡和廣播地址
- 22. 網絡抓取 - 網絡登錄問題
- 23. UDP廣播或IP多播?
- 24. 廣播您的互聯網IP
- 25. 在Android中獲取網絡IP地址
- 26. 獲取網絡用戶的IP地址
- 27. 沒有廣播的局域網上的網絡發現
- 28. qt - 基於網絡的位置獲取
- 29. Java併發網絡問題
- 30. zeromq廣播到整個網絡
youu找到任何解決方案 – Xsmael 2017-03-08 17:05:59