Qt Tcp Server

简介: Qt Tcp Server

chatgpt 结果

// TcpServerBase.h
#ifndef TCPSERVER_H
#define TCPSERVER_H
#include <QObject>
#include <QTcpServer>
#include <QTcpSocket>
class TcpServerBase : public QObject
{
  Q_OBJECT
public:
  explicit TcpServerBase(QObject *parent = nullptr);
  bool start(quint16 port);
  void stop();
signals:
  void clientConnected(QTcpSocket *socket);
  void clientDisconnected(QTcpSocket *socket);
  void readyRead(QTcpSocket *socket);
  void bytesWritten(QTcpSocket *socket, qint64 bytes);
  void error(QTcpSocket::SocketError socketError);
private slots:
  void onNewConnection();
  void onClientDisconnected();
  void onReadyRead();
  void onBytesWritten(qint64 bytes);
private:
  QTcpServer *m_server;
};
#endif // TCPSERVER_H
// tcpserver.cpp
#include "TcpServerBase.h"
TcpServerBase::TcpServerBase(QObject *parent) : QObject(parent), m_server(nullptr)
{
  m_server = new QTcpServer(this);
  connect(m_server, &QTcpServer::newConnection, this, &TcpServerBase::onNewConnection);
}
bool TcpServerBase::start(quint16 port)
{
  if (!m_server->listen(QHostAddress::Any, port)) {
    return false;
  }
  return true;
}
void TcpServerBase::stop()
{
  m_server->close();
  //qDeleteAll(m_clients);
  //m_clients.clear();
}
void TcpServerBase::onNewConnection()
{
  while (m_server->hasPendingConnections()) {
    QTcpSocket *client = m_server->nextPendingConnection();
    //m_clients.append(client);
    connect(client, &QTcpSocket::disconnected, this, &TcpServerBase::onClientDisconnected);
    connect(client, &QTcpSocket::readyRead, this, &TcpServerBase::onReadyRead);
    connect(client, &QTcpSocket::bytesWritten, this, &TcpServerBase::onBytesWritten);
    emit clientConnected(client);
  }
}
void TcpServerBase::onClientDisconnected()
{
  QTcpSocket *client = qobject_cast<QTcpSocket*>(sender());
  if (client) {
    //m_clients.removeOne(client);
    //client->deleteLater();
    emit clientDisconnected(client);
  }
}
void TcpServerBase::onReadyRead()
{
  QTcpSocket *client = qobject_cast<QTcpSocket*>(sender());
  if (client) {
    emit readyRead(client);
  }
}
void TcpServerBase::onBytesWritten(qint64 bytes)
{
  QTcpSocket *client = qobject_cast<QTcpSocket*>(sender());
  if (client) {
    emit bytesWritten(client, bytes);
  }
}
目录
相关文章
|
2月前
|
运维 监控 网络协议
QT实现TCP通信:从基础到高级的全面解析
QT实现TCP通信:从基础到高级的全面解析
203 0
|
1月前
|
网络协议 编译器 调度
【Qt 面试题】深入剖析QT TCP通讯流程及应用实例
【Qt 面试题】深入剖析QT TCP通讯流程及应用实例
30 0
|
7月前
|
网络协议 C++ Python
Qt+C++ TCP发送接收信息客户端与服务端窗体
Qt+C++ TCP发送接收信息客户端与服务端窗体
67 0
Qt+C++ TCP发送接收信息客户端与服务端窗体
项目实战:Qt编译Qt库以及使用C#调用Qt库,并实现C#集成Qt的tcp客户端
项目实战:Qt编译Qt库以及使用C#调用Qt库,并实现C#集成Qt的tcp客户端
项目实战:Qt编译Qt库以及使用C#调用Qt库,并实现C#集成Qt的tcp客户端
|
网络协议
【QT】TCP、UDP通信
【QT】TCP、UDP通信
【QT】TCP、UDP通信
|
网络协议
Qt中的TCP服务端和客户端互发消息
Qt中的TCP服务端和客户端互发消息
205 0
Qt中的TCP服务端和客户端互发消息
|
网络协议 编译器 C语言
QT应用编程: 开发TCP网络调试助手
QT应用编程: 开发TCP网络调试助手
190 0
QT应用编程: 开发TCP网络调试助手
|
网络协议
Qt-网络与通信-TCP版本聊天程序
Qt-网络与通信-TCP版本聊天程序
106 0
Qt-网络与通信-TCP版本聊天程序
|
网络协议 Android开发
Qt PC 安卓 tcp传输文件
废话不多说,如题,上代码
168 0
|
网络协议 监控 数据安全/隐私保护

热门文章

最新文章

推荐镜像

更多