[問題] 用Qt的UDP做語音通話

作者: googled (15357)   2016-06-05 20:56:22
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Qt
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
Qt
問題(Question):
各位大大好
想請問一下,小弟第一次用到UDP來寫Socket
目前想實作一個可以語音通話的程式
在A電腦開啟Server模式後
B、C...等電腦可以藉由輸入A電腦的IP來連線,並進行語音通話
可是有幾個問題想請教一下各位大大
假設A電腦的IP是1.1.1.1、B電腦是2.2.2.2、C為3.3.3.3
我在A電腦new 一個UDP並且監聽的Port假設是5555
serverSocket = new QUdpSocket();
serverSocket->bind(5555, QUdpSocket::ShareAddress |
QUdpSocket::ReuseAddressHint);
那麼我B電腦則是會通過new一個UDP,並且連接到A電腦的IP
clientSocket = new QUdpSocket();
clientSocket->connectToHost("1.1.1.1", 38888);
C電腦也是同樣的方式
我嘗試上述的做法後,B跟C確實可以用writeDatagram傳送資訊到A電腦
QByteArray data;
clientSocket->writeDatagram(data, QHostAddress::Broadcast, 38888);
可是目前的問題卡在A該怎麼傳送資訊到B跟C
我如果同樣在A上用serverSocket->writeDatagram()
也只有A本身會收到而已@@
而且B在writeDatagram時,雖然A收的到,不過C是收不到的
我上網搜跟UDP廣播有關的關鍵字,查到的都是Client傳給Server端而已
並沒有找到Server傳給Client的方法
難道說UDP的Socket其實Server無法傳送資訊給Client嗎@@?
如果是的話那我還真的耍蠢了...
所以想請問一下各位大大,該怎麼做才能讓A電腦也能傳送資訊給B、C
以及B再傳資訊時,A跟C也都收的到
謝謝各位大大
作者: Schottky (順風相送)   2016-06-05 21:02:00
writeDatagram 明明就可以指定收件人的 IP 和 port你用 broadcast 是想做什麼?

Links booklink

Contact Us: admin [ a t ] ucptt.com