基于QT5的TCP服务端

  • b7_703490
    了解作者
  • 6KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-06-06 22:52
    上传日期
基于QT5的tcp服务端,支持多客户端连接,支持收发中英文字符串,跨平台,适合新手学习和移植到自己的开发程序中。
qtserver.rar
  • qtserver
  • mainwindow.ui
    6KB
  • tcpclientsocket.cpp
    921B
  • tcpclientsocket.h
    431B
  • mainwindow.cpp
    1.9KB
  • main.cpp
    183B
  • server.cpp
    2.5KB
  • mainwindow.h
    637B
  • qtserver.pro
    1.1KB
  • server.h
    777B
内容介绍
#include "server.h" #include <QDebug> Server::Server(QObject *parent):QTcpServer(parent) { } //新的客户端连接到服务器,则新建一个socket对象用以实例化客户端 void Server::incomingConnection(qintptr socketDescriptor) { TcpClientSocket *tcpClientSocket = new TcpClientSocket(this); connect(tcpClientSocket,SIGNAL(updateClients(QHostAddress,QString)),this,SLOT(updateClients(QHostAddress,QString))); connect(tcpClientSocket,SIGNAL(disconnected(int)),this,SLOT(slotDisconnected(int))); tcpClientSocket->setSocketDescriptor(socketDescriptor); tcpClientSocketList.append(tcpClientSocket); //新客户端进来,触发更新信号,这个信号函数是自己定义的,可以显示目前有多少个客户端在线 emit updateServer(tcpClientSocketList.count()); } //有客户端发送数据进来了,可以在这里处理数据,然后发送到界面显示。 void Server::updateClients(QHostAddress ip,QString msg) { //TODO 这里可以进行一些逻辑处理 //把信息转发给主界面显示 emit sendreceivedClientDataToMainWindow(ip.toString(),msg); } void Server::acceptSendDataFromInputToClient(QString msg) { for(int i=0;i<tcpClientSocketList.count();i++) { QTcpSocket *item = tcpClientSocketList.at(i); item->write(msg.toLocal8Bit()); } } //客户端断连接触发信号,如果该客户端断链,则从IP队列中删除该客户端IP void Server::slotDisconnected(int descriptor) { for(int i=0;i<tcpClientSocketList.count();i++) { QTcpSocket *item = tcpClientSocketList.at(i); if(item->socketDescriptor()==descriptor) { tcpClientSocketList.removeAt(i); } } emit updateServer(tcpClientSocketList.count()); } //获取本机IP地址函数,这个函数可以获得当前电脑的IP地址 QString Server::getHostIpAddress() { QString strIpAddress; QList<QHostAddress> ipAddressesList = QNetworkInterface::allAddresses(); int nListSize = ipAddressesList.size(); for (int i = 0; i < nListSize; ++i) { if (ipAddressesList.at(i) != QHostAddress::LocalHost && ipAddressesList.at(i).toIPv4Address()) { strIpAddress = ipAddressesList.at(i).toString(); break; } } if (strIpAddress.isEmpty()) strIpAddress = QHostAddress(QHostAddress::LocalHost).toString(); return strIpAddress; }
评论
    相关推荐
    • 事项:跨平台libc
      事项:跨平台libc
    • dbg跨平台诊断工具
      dbg是一款跨平台诊断和调试工具,支持MingGw等编译器。在程序崩溃的情况下可以打印出dump文件
    • 跨平台工具的cmake
      跨平台工具的cmake
    • 跨平台
      公司业务平台 满足您在业务十字路口的成功 技术运用 WEB API 休息 储存库模式 依赖注入 实体框架 数据传输对象(DTO) 自动贴图 中介 二手包装 Microsoft.EntityFrameworkCore Microsoft.EntityFrameworkCore....
    • 跨平台实时写日志
      1、日志文件大小、个数自定义; 2、自动创建相对与绝对路径; 3、实时写文件,方便查看; 4、跨平台VS2008、gcc-5.4下警告级别最高,没有任何警告。
    • 跨平台的播放器
      跨平台的播放器跨平台的播放器跨平台的播放器
    • 跨平台账户管理
      实现不同账户之间的切换管理,跟单一键平仓,止盈和止损。
    • 跨平台WEB播放器
      一个跨平台的播放器,支持RTMP,HLS,MP4的直播和点播
    • 跨平台故事讲述
      跨平台故事讲述
    • 重新思考跨平台
      重新思考跨平台