2012-07-17 295 views
0

有沒有一種方法可以獲取用於發送消息的udp套接字的端口號?如何知道QUdpSocket中的發送端口號?

我想要做的就是發送一個udp數據報給某人並收聽那個發送端口。

例如在下面的代碼:

QUdpSocket *s = new QUdpSocket(this); 
s.writeDataGram(theData,theIp,thePort); 

它全自動結合插座S與任何發送端口是什麼?

如果是這樣,我可以聽那個發送端口嗎?

回答

1

在發送數據之前將套接字綁定到端口,地址並指定BindMode是安全的。

一旦套接字綁定到端口和地址,readyRead()UDP Datagram到達指定端口時發出。

因此,您可以捕獲readyRead()信號並相應地處理數據,即您不需要監聽端口。 如果您沒有將套接字s綁定到端口thePort,readyRead()信號在UDP數據報到達後不會被髮射。

+0

綁定在發送或接收時自動發生,除非您已經綁定了套接字。因此,你的回答沒有意義。 – EJP 2012-07-17 10:43:29

+0

希望我回答了至少聽過的部分。 – ScarCode 2012-07-17 15:36:27

0

readDatagrammanual page

 
qint64 QUdpSocket::readDatagram (char * data, qint64 maxSize, QHostAddress * address = 0, quint16 * port = 0) 

Receives a datagram no larger than maxSize bytes and stores it in data. 
The sender's host address and port is stored in *address and *port 
(unless the pointers are 0). 

接收數據報,你必須首先將套接字綁定到特定的UDP端口。然後爲了得到接收到的數據報的源端口,你爲readDatagramport參數提供一個非零參數。

相關問題