一秒学会Windows系统或者服务器打开远程连接

Windows系统

步骤:

  1. 右键开始菜单,选择打开命令行(最好是以管理员身份打开)
  2. 输入:mstsc,回车即可。以win10为例如下图:
    win10远程示例

Windows10

win10还有一种更加快捷的方法,如下:

  1. 点击工具栏的开始右侧输入框,如下图所示:
    在这里插入图片描述
  2. 输入框输入远程,列表第一个即远程桌面连接,点击即可进入远程左面连接。
    在这里插入图片描述

写在最后

非常感谢大家的认真阅读,如有不足,还望各位看官多批评指正=_=
技术交流秋秋群:719023986

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的示例代码,实现了一个TCP服务器和客户端程序,包括自动重连和心跳: TCP服务器: ```cpp #include <QTcpServer> #include <QTcpSocket> #include <QTimer> class TcpServer : public QTcpServer { Q_OBJECT public: explicit TcpServer(QObject *parent = nullptr); protected: void incomingConnection(qintptr handle) override; signals: void dataReceived(QByteArray data); private slots: void onReadyRead(); void onDisconnected(); void onHeartbeat(); private: QTcpSocket *m_socket; QByteArray m_buffer; QTimer m_heartbeatTimer; int m_heartbeatCount; }; TcpServer::TcpServer(QObject *parent) : QTcpServer(parent) , m_socket(nullptr) , m_heartbeatCount(0) { connect(&m_heartbeatTimer, &QTimer::timeout, this, &TcpServer::onHeartbeat); m_heartbeatTimer.start(30000); // 30秒一次心跳 } void TcpServer::incomingConnection(qintptr handle) { if (!m_socket) { m_socket = new QTcpSocket(this); connect(m_socket, &QTcpSocket::readyRead, this, &TcpServer::onReadyRead); connect(m_socket, &QTcpSocket::disconnected, this, &TcpServer::onDisconnected); m_socket->setSocketDescriptor(handle); } } void TcpServer::onReadyRead() { m_buffer.append(m_socket->readAll()); while (m_buffer.size() >= 4) { int length = qFromLittleEndian<int>(m_buffer.left(4)); if (m_buffer.size() < length + 4) break; emit dataReceived(m_buffer.mid(4, length)); m_buffer = m_buffer.mid(length + 4); } } void TcpServer::onDisconnected() { if (m_socket) { m_socket->deleteLater(); m_socket = nullptr; m_heartbeatCount = 0; } } void TcpServer::onHeartbeat() { if (m_socket) { QByteArray data; QDataStream stream(&data, QIODevice::WriteOnly); stream.setByteOrder(QDataStream::LittleEndian); stream << qint32(0); stream << qint8(0); stream << qint8(0); stream << qint8(0); stream.device()->seek(0); stream << qint32(data.size() - 4); m_socket->write(data); m_socket->flush(); ++m_heartbeatCount; if (m_heartbeatCount >= 5) { m_socket->disconnectFromHost(); m_heartbeatCount = 0; } } } ``` TCP客户端: ```cpp #include <QTcpSocket> #include <QTimer> class TcpClient : public QObject { Q_OBJECT public: explicit TcpClient(QObject *parent = nullptr); void connectToHost(const QString &host, quint16 port); signals: void connected(); void disconnected(); void dataReceived(QByteArray data); private slots: void onConnected(); void onReadyRead(); void onDisconnected(); void onReconnect(); private: QTcpSocket *m_socket; QByteArray m_buffer; QTimer m_reconnectTimer; int m_reconnectCount; QTimer m_heartbeatTimer; int m_heartbeatCount; }; TcpClient::TcpClient(QObject *parent) : QObject(parent) , m_socket(nullptr) , m_reconnectCount(0) , m_heartbeatCount(0) { connect(&m_reconnectTimer, &QTimer::timeout, this, &TcpClient::onReconnect); connect(&m_heartbeatTimer, &QTimer::timeout, this, [this]() { if (m_socket) { QByteArray data; QDataStream stream(&data, QIODevice::WriteOnly); stream.setByteOrder(QDataStream::LittleEndian); stream << qint32(0); stream << qint8(0); stream << qint8(0); stream << qint8(0); stream.device()->seek(0); stream << qint32(data.size() - 4); m_socket->write(data); m_socket->flush(); ++m_heartbeatCount; if (m_heartbeatCount >= 5) { m_socket->disconnectFromHost(); m_heartbeatCount = 0; } } }); m_reconnectTimer.start(1000); // 1秒后自动重连 m_heartbeatTimer.start(30000); // 30秒一次心跳 } void TcpClient::connectToHost(const QString &host, quint16 port) { if (!m_socket) { m_socket = new QTcpSocket(this); connect(m_socket, &QTcpSocket::connected, this, &TcpClient::onConnected); connect(m_socket, &QTcpSocket::readyRead, this, &TcpClient::onReadyRead); connect(m_socket, &QTcpSocket::disconnected, this, &TcpClient::onDisconnected); m_socket->connectToHost(host, port); } } void TcpClient::onConnected() { m_reconnectCount = 0; m_heartbeatCount = 0; m_reconnectTimer.stop(); emit connected(); } void TcpClient::onReadyRead() { m_buffer.append(m_socket->readAll()); while (m_buffer.size() >= 4) { int length = qFromLittleEndian<int>(m_buffer.left(4)); if (m_buffer.size() < length + 4) break; emit dataReceived(m_buffer.mid(4, length)); m_buffer = m_buffer.mid(length + 4); } } void TcpClient::onDisconnected() { if (m_socket) { m_socket->deleteLater(); m_socket = nullptr; m_heartbeatCount = 0; m_reconnectTimer.start(1000); // 1秒后自动重连 } } void TcpClient::onReconnect() { if (!m_socket && m_reconnectCount < 5) { m_socket = new QTcpSocket(this); connect(m_socket, &QTcpSocket::connected, this, &TcpClient::onConnected); connect(m_socket, &QTcpSocket::readyRead, this, &TcpClient::onReadyRead); connect(m_socket, &QTcpSocket::disconnected, this, &TcpClient::onDisconnected); m_socket->connectToHost("127.0.0.1", 1234); ++m_reconnectCount; } else if (m_socket) { m_reconnectTimer.stop(); } } ``` 使用示例: ```cpp TcpServer server; QObject::connect(&server, &TcpServer::dataReceived, [](QByteArray data) { qDebug() << "Server received data:" << data; }); TcpClient client; QObject::connect(&client, &TcpClient::connected, [&client]() { qDebug() << "Client connected"; client.connectToHost("127.0.0.1", 1234); }); QObject::connect(&client, &TcpClient::disconnected, []() { qDebug() << "Client disconnected"; }); QObject::connect(&client, &TcpClient::dataReceived, [](QByteArray data) { qDebug() << "Client received data:" << data; }); server.listen(QHostAddress::Any, 1234); client.connectToHost("127.0.0.1", 1234); ``` 注意:在实际应用中,应该根据具体的需求调整心跳间隔和重连次数等参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值