本人水平较低,若有错误的地方望大佬指正!!!
通过socket代理实现上位机对下位机发送命令并接收下位机返回的数据
一、需要创建一个代理服务端
m_server = new QTcpServer(this);
二、通过listen对想要连接的客户端进行监听
m_server->listen(QHostAddress::Any,8888);
三、当有客户端进行连接时, 会收到newConnection()信号
connect(m_server,SIGNAL(newConnection()),this,SLOT(onnewConnectSlot()));
四、通过nextPendingConnection()函数,等待挂起连接
QTcpSocket* m_client = m_server->nextPendingConnection();
五、获取连接的ip地址与随机分配的端口号
QString ip = m_client->peerAddress().toString(); int port1 = m_client->peerPort();
六、创建一个新的对象连接下位机
m_downstreamSocket=new QTcpSocket(this); m_downstreamSocket->connectToHost(QHostAddress("169.254.7.71"),m_port);
七、将上位机发送的命令传输给下位机
QTcpSocket *senderSocket = qobject_cast<QTcpSocket*>(sender()); QByteArray data = senderSocket->readAll(); m_downstreamSocket->write(data);
八、将下位机返回的数据传输给上位机
QByteArray data = m_downstreamSocket->readAll(); m_client->write(data); m_client1->write(data);