如果要改成能在两台电脑上运行并且只有一台下位机又怎么改
时间: 2023-11-30 21:02:21 浏览: 35
如果要让这个程序能够在两台电脑上运行,并且只有一个下位机,可以将下位机连接到一个公网 IP 地址,并将其端口号映射到该公网 IP 地址。然后,两个上位机可以通过不同的公网 IP 地址和端口号连接到下位机。
这需要在下位机所在的网络中设置端口映射或端口转发规则,将下位机的端口号映射到公网 IP 地址上。这通常需要访问路由器的设置页面进行配置。具体的配置方法可以参考路由器的说明文档或者向网络管理员咨询。
在代码中,需要将下位机的 IP 地址改为公网 IP 地址,端口号则为映射到公网 IP 地址上的端口号。同时,需要确保两个上位机使用不同的端口号进行连接,以避免端口冲突。
下面是修改后的代码示例:
```cpp
#include <QTcpSocket>
#include <QHostAddress>
// 上位机1连接下位机
QTcpSocket socket1;
socket1.connectToHost(QHostAddress("公网IP地址"), 映射到公网IP地址的端口号1);
// 上位机2连接下位机
QTcpSocket socket2;
socket2.connectToHost(QHostAddress("公网IP地址"), 映射到公网IP地址的端口号2);
// 上位机1接收下位机发送的数据
connect(&socket1, &QTcpSocket::readyRead, [&](){
QByteArray data = socket1.readAll();
// 处理接收到的数据
});
// 上位机2接收下位机发送的数据
connect(&socket2, &QTcpSocket::readyRead, [&](){
QByteArray data = socket2.readAll();
// 处理接收到的数据
});
// 上位机1发送数据到下位机
socket1.write("hello from socket1");
// 上位机2发送数据到下位机
socket2.write("hello from socket2");
```
需要注意的是,修改后的程序需要在已经完成端口映射或端口转发的网络中运行,才能够正常连接下位机。