手动开发一个TCP服务器调试工具(二):无界面 TCP 通信服最小实现(源码)

2025-08-07 0 986

本篇将讲解如何使用 Qt 构建一个简单但完整的TCP 服务端,无需图形界面。手动开发一个TCP服务器调试工具(二):无界面 TCP 通信服最小实现(源码)unsetunset

unsetunset✦ 程序功能概览unsetunset

  • 启动一个监听本地 12345 端口的 TCP 服务;
  • 有客户端连接时输出信息;
  • 每秒向客户端发送一次当前时间;
  • 支持接收客户端数据;
  • 客户端断开时输出断开提示。

unsetunset✦ 代码下载unsetunset

通过网盘分享的文件:无界面服务器代码 链接: https://pan.baidu.com/s/1WeTGe1IciV65XnHxL15eUg?pwd=jkcf 提取码: jkcf


unsetunset✦ 核心代码讲解unsetunset

以下是程序完整代码,所有逻辑都写在 main() 函数中,便于入门学习。

#include <QCoreApplication>
#include <QTcpServer>
#include <QTcpSocket>
#include <QDateTime>
#include <QTextStream>
#include <QTimer>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication app(argc, argv);

    QTcpServer server;

    // 启动监听:监听所有地址,端口12345
    if (!server.listen(QHostAddress::Any, 12345)) {
        qCritical() << "服务器启动失败:" << server.errorString();
        return1;
    }

    qDebug() << "服务器已启动,监听端口:" << server.serverPort();

    // 处理新连接
    QObject::connect(&server, &QTcpServer::newConnection, [&server]() {
        while (server.hasPendingConnections()) {
            QTcpSocket *socket = server.nextPendingConnection();

            // 输出客户端连接信息
            QString clientIP = socket->peerAddress().toString();
            quint16 clientPort = socket->peerPort();
            qDebug() << "机械臂连接:" << clientIP << ":" << clientPort;

            // 初次发送时间
            QTextStream ts(socket);
            ts << QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss") << "\n";
            ts.flush();

            // 定时器:每秒发送一次时间
            QTimer *timer = new QTimer(socket);
            timer->setInterval(1000);
            QObject::connect(timer, &QTimer::timeout, [socket]() {
                if (socket->state() == QAbstractSocket::ConnectedState) {
                    QTextStream ts(socket);
                    ts <<  QDateTime::currentDateTime().toString("hh:mm:ss") << "\n";
                    ts.flush();
                }
            });
            timer->start();

            // 处理接收到的数据
            QObject::connect(socket, &QTcpSocket::readyRead, [socket]() {
                QByteArray data = socket->readAll();
                qDebug() << "收到客户端数据:" << QString::fromUtf8(data).trimmed();
            });

            // 错误处理
            QObject::connect(socket, QOverload<QAbstractSocket::SocketError>::of(&QTcpSocket::errorOccurred),
                             [socket](QAbstractSocket::SocketError) {
                                 qWarning() << "连接错误:" << socket->errorString();
                             });

            // 客户端断开连接
            QObject::connect(socket, &QTcpSocket::disconnected, [socket, clientPort]() {
                qDebug() << "客户端端口" << clientPort << "断开连接";
                socket->deleteLater();
            });
        }
    });

    return app.exec();
}

 


unsetunset✦ 函数功能一览unsetunset

函数 / 方法
功能说明
QTcpServer::listen()
启动监听,接收客户端连接
server.newConnection
有新连接时发出信号
nextPendingConnection()
获取当前连接的客户端套接字
peerAddress()

 / peerPort()
获取客户端的 IP 和端口
QTextStream
以流方式发送文本,简化编码处理
QTimer::timeout
每秒触发,发送时间数据
readyRead
客户端发送数据时触发
errorOccurred
套接字错误处理
disconnected
客户端断开连接时释放资源

unsetunset📌 总结unsetunset

本篇实现了一个精简、高效的 TCP 服务端:

  • 构建方式简单;
  • 支持定时数据推送;
  • 适合做嵌入式或控制终端后台服务。

unsetunset📢 下一篇预告:unsetunset

使用 QWidget 构建 TCP 服务控制界面

敬请期待!

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

免责声明 1、百创网作为第三方中介平台,依据交易合同(商品描述、交易前商定的内容)来保障交易的安全及买卖双方的权益; 2、非平台线上交易的项目,出现任何后果均与百创网无关;无论卖家以何理由要求线下交易的,请联系管理举报。 3. 百创网网站的资源均由店家上传出售,本站无法判断和识别资源的版权等合法性属性。如果您对本网站上传的信息资源的版权存有异议,请您及时联系 我们。如果需要删除链接,请下载下面的附件,正确填写信息后并发给我们,本站核实信息真实性后,在24小时内对商品进行删除处理。 联系邮箱:baicxx@baicxx.com (相关事务请发函至该邮箱)

百创网-源码交易平台_网站源码_商城源码_小程序源码 行业资讯 手动开发一个TCP服务器调试工具(二):无界面 TCP 通信服最小实现(源码) https://www.baicxx.com/32677.html

常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、百创会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、百创无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在百创上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于百创介入快速处理。
查看详情
  • 1、百创作为第三方中介平台,依据交易合同(商品描述、交易前商定的内容)来保障交易的安全及买卖双方的权益; 2、非平台线上交易的项目,出现任何后果均与百创无关;无论卖家以何理由要求线下交易的,请联系管理举报。
查看详情
  • 免责声明 1、百创网作为第三方中介平台,依据交易合同(商品描述、交易前商定的内容)来保障交易的安全及买卖双方的权益; 2、非平台线上交易的项目,出现任何后果均与百创网无关;无论卖家以何理由要求线下交易的,请联系管理举报。 3. 百创网网站的资源均由店家上传出售,本站无法判断和识别资源的版权等合法性属性。如果您对本网站上传的信息资源的版权存有异议,请您及时联系 我们。如果需要删除链接,请下载下面的附件,正确填写信息后并发给我们,本站核实信息真实性后,在24小时内对商品进行删除处理。 联系邮箱:baicxx@baicxx.com (相关事务请发函至该邮箱)
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务

  • 0 +

    访问总数

  • 0 +

    会员总数

  • 0 +

    文章总数

  • 0 +

    今日发布

  • 0 +

    本周发布

  • 0 +

    运行天数

你的前景,远超我们想象