[Qt] QtcpSocket獲取ip地址的小bug



     昨天測試代碼時發現了一個很奇怪的問題,在實驗室時,我將服務器端運行在一臺服務器上,用我和同學的電腦運行客戶端完全正常。但當我晚上在宿舍測試代碼時,一臺電腦運行客戶端和服務端,另一臺運行客戶端,卻總是異常,同一份代碼,爲什麼結果會不一樣呢?

     客戶端是多對多的音視頻通話,服務器端協助連接。宿舍的實驗結果是兩種情況①兩臺客戶端只要連接就死了②一臺客戶端竟然收到自己發的音視頻,而另一臺客戶端卻總是顯示音視頻流被佔用。特別是第二種現象很不符合常理!兩臺客戶端是對等的,怎麼實驗現象會出現不一樣呢?!

     後來我通過查看流傳輸的sdp文件記錄,發現其中一些ip地址竟然是127.0.0.1,更有一些出現::1這樣的ip地址。經過回想,原來我在已作爲服務端的那臺機子上運行客戶端時,爲了省事,有時將ip設爲127.0.0.1,有時就索性設爲localhost.

      當客戶端要連接的主機爲localhost時,服務器端獲取的客戶端Tcp鏈路指針中的地址字符串QTcpSocket *->peerAddress()竟然是"::1"。

      而當主機爲"127.0.0.1"時,服務器端獲取的客戶端Tcp鏈路指針的地址字符串QTcpSocket *->peerAddress()竟然也是"127.0.0.1",這兩種情況根本就不是真實的ip地址。

     附圖:



發佈了35 篇原創文章 · 獲贊 8 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章