将QUdpSocket绑定或“连接”到远程主机和端口?

时间:2016-02-10 18:07:30

标签: sockets network-programming udp qt5

我想将QUdpSocket“连接”到远程主机端口,但是没有这样做。有可能吗?

我想实现的方案如下:

1)服务器绑定到localhost / port:

// On server side, let server IP be "192.168.0.235"
serverUdpSocket->connectToHost(QHostAddress(QHostAddress::LocalHost), 44444);
... // check if connection is ok, etc
serverUdpSocket->write(someByteArray);

2)客户端从服务器读取数据,我试过:

// bind fails with SocketAddressNotAvailableError
udpSocket->bind(QHostAddress("192.168.0.235"), 44444);

这样:

udpSocket->connectToHost(QHostAddress("192.168.0.235"), 44444, QIODevice::ReadOnly);
// State becomes "Connected", but I don't get any data and `readyRead()`
// is never emitted, though I connected to it.

但它不起作用。

我知道UDP是一种无连接协议。 A也设法做到反之亦然 - 绑定到本地主机并从另一个主机向该主机发送数据。但我对这种方式感兴趣,因为远程主机可能是提供音频流的服务器,我想用我的代码阅读。

在示例和教程中,我只看到绑定到本地端口并从中读取数据。没有提供绑定到远程主机端口的示例。

1 个答案:

答案 0 :(得分:1)

bind()将套接字绑定到本地地址。 connect()将套接字连接到远程地址。通常服务器绑定和客户端连接。