有没有一种方法可以获取用于发送消息的udp套接字的端口号?如何知道QUdpSocket中的发送端口号?
我想要做的就是发送一个udp数据报给某人并收听那个发送端口。
例如在下面的代码:
QUdpSocket *s = new QUdpSocket(this);
s.writeDataGram(theData,theIp,thePort);
它全自动结合插座S与任何发送端口是什么?
如果是这样,我可以听那个发送端口吗?
有没有一种方法可以获取用于发送消息的udp套接字的端口号?如何知道QUdpSocket中的发送端口号?
我想要做的就是发送一个udp数据报给某人并收听那个发送端口。
例如在下面的代码:
QUdpSocket *s = new QUdpSocket(this);
s.writeDataGram(theData,theIp,thePort);
它全自动结合插座S与任何发送端口是什么?
如果是这样,我可以听那个发送端口吗?
在发送数据之前将套接字绑定到端口,地址并指定BindMode是安全的。
一旦套接字绑定到端口和地址,readyRead()在UDP Datagram
到达指定端口时发出。
因此,您可以捕获readyRead()
信号并相应地处理数据,即您不需要监听端口。 如果您没有将套接字s
绑定到端口thePort
,readyRead()
信号在UDP数据报到达后不会被发射。
从readDatagram
的manual 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端口。然后为了得到接收到的数据报的源端口,你为readDatagram
的port
参数提供一个非零参数。
绑定在发送或接收时自动发生,除非您已经绑定了套接字。因此,你的回答没有意义。 – EJP 2012-07-17 10:43:29
希望我回答了至少听过的部分。 – ScarCode 2012-07-17 15:36:27