有没有办法可以获得用于发送消息的udp套接字的端口号?
我想要做的是将udp数据报发送给某人并听取该发送端口。
例如,在以下代码中:
QUdpSocket *s = new QUdpSocket(this);
s.writeDataGram(theData,theIp,thePort);
是否自动将socket s与发送端口绑定?
如果是这样,我可以收听该发送端口吗?
答案 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
参数提供非零参数。