我怎么知道QUdpSocket中的发送端口号?

时间:2012-07-17 05:56:31

标签: c++ qt networking qudpsocket

有没有办法可以获得用于发送消息的udp套接字的端口号?

我想要做的是将udp数据报发送给某人并听取该发送端口。

例如,在以下代码中:

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

是否自动将socket s与发送端口绑定?

如果是这样,我可以收听该发送端口吗?

2 个答案:

答案 0 :(得分:1)

将套接字绑定到端口,地址并在发送数据之前指定BindMode是安全的。

一旦套接字绑定到端口和地址,UDP Datagram到达指定端口时就会发出readyRead()

因此,您可以捕获readyRead()信号并相应地处理数据,即您不需要监听端口。 如果未将套接字s绑定到端口thePort,则在UDP数据报到达时将不会发出readyRead()信号。

答案 1 :(得分:0)

来自readDatagram的{​​{3}}:

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端口。然后,要获取接收数据报的源端口,请为port readDatagram参数提供非零参数。