2012-07-17 296 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参数提供一个非零参数。

相关问题