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通信:从基础到高级的全面解析
395 0
|
2天前
|
网络协议
Qt中的网络编程(Tcp和Udp)运用详解以及简单示范案例
Tcp和Udp是我们学习网络编程中经常接触到的两个通讯协议,在Qt也被Qt封装成了自己的库供我们调用,对于需要进行网络交互的项目中无疑是很重要的,希望这篇文章可以帮助到大家。 是关于Qt中TCP和UDP的基本使用和特点:
|
2月前
|
网络协议 算法 网络性能优化
Qt TCP网络上位机的设计(通过网络编程与下位机结合)
Qt TCP网络上位机的设计(通过网络编程与下位机结合)
Qt TCP网络上位机的设计(通过网络编程与下位机结合)
|
2月前
|
JSON 网络协议 开发工具
基于Qt实现的TCP端口数据转发服务器
基于Qt实现的TCP端口数据转发服务器
37 0
基于Qt实现的TCP端口数据转发服务器
|
2月前
|
网络协议 编译器 调度
【Qt 面试题】深入剖析QT TCP通讯流程及应用实例
【Qt 面试题】深入剖析QT TCP通讯流程及应用实例
49 0
|
10月前
|
网络协议 C++ Python
Qt+C++ TCP发送接收信息客户端与服务端窗体
Qt+C++ TCP发送接收信息客户端与服务端窗体
84 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服务端和客户端互发消息
217 0
Qt中的TCP服务端和客户端互发消息
|
网络协议 编译器 C语言
QT应用编程: 开发TCP网络调试助手
QT应用编程: 开发TCP网络调试助手
198 0
QT应用编程: 开发TCP网络调试助手