看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) QT 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) N/A 問題(Question): 嘗試用Qt Network 作UDP指定IP與PORT的封包傳送, 若是用預設IP可以順利收送,但是指定IP後就只能送不能收 作為對照有另一隻第三方的APP可以收送指定IP與PORT的封包。 預期的正確結果(Expected Output): 正常封包收送 程式碼(Code):(請善用置底文網頁, 記得排版) line 55, receiver.cpp udpSocket = new QUdpSocket(this); //udpSocket->bind(QHostAddress::Broadcast, 45454); udpSocket->bind(QHostAddress("239.255.43.12"), 4312, QUdpSocket::ReuseAddressHint); line 88, sender.cpp udpSocket->writeDatagram(datagram.data(), datagram.size(), QHostAddress("239.192.43.12"), 4312); 補充說明(Supplement): 使用的code同 Qt Example Udp sender / receiver, 有修改的部分我寫在上面 實際執行結果是,sender送的資料第三方的receiver可以收, 但是無論sender或第三方的sender送的資料,自己的receiver都收不到。 請問有哪邊要特別調整才可以收到嗎? p.s. 無防火牆 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.135.21.58 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1442399043.A.5EA.html
allyusd: receiver 的 IP 指定 239.255.43.12 是故意的嗎 09/16 20:31
chigi: 兩個不是成對的嗎?所以我才設一樣的。 09/16 23:46
chigi: 我也試過,用QHostAddress::AnyIPv4也不行..@@ 09/16 23:46
自問自答 先上結論,用UdpSocket::joinMulticastGroup(const QHostAddress &) 設定IP,bind裡面的IP address是Device IP,也就是媒體 最後改成 udpSocket = new QUdpSocket(this); udpSocket->bind(QHostAddress::AnyIPv4, 4312, QUdpSocket::ReuseAddressHint); udpSocket->joinMulticastGroup(QHostAddress("239.192.43.12")); 就可以用了。 ※ 編輯: chigi (220.135.21.58), 09/17/2015 10:10:06
allyusd: 不用這麼麻煩,你還是沒有發現你一開始的 IP 不一樣嗎? 09/18 07:55
chigi: 痾,那是筆誤..我有調整過IP的位置..@@ 09/18 12:16