QT实现基于TCP连接的聊天室

页面展示:
在这里插入图片描述
实现思路:
首先使用QTcpserver绑定主机并监听端口,将连入的socket放入列表供随时调取。
然后使用QTcpsocket创建服务端的socket套接字,连接主机,从而随时使用socket向主机端发送信息。

.h文件展示

客户端:

#ifndef TCPCLIENT_H
#define TCPCLIENT_H

#include <QMainWindow>
#include <QTcpSocket>
#include <QHostAddress>
QT_BEGIN_NAMESPACE
namespace Ui {
    
     class Tcpclient; }
QT_END_NAMESPACE

class Tcpclient : public QMainWindow
{
    
    
    Q_OBJECT

public:
    Tcpclient(QWidget *parent = nullptr);
    ~Tcpclient();

private slots:
    void on_btn_connect_clicked();
    void doProcessConnected();
    void doProcessReadyRead();
    void doProcessDisConnected();
    void doProcessError(QAbstractSocket::SocketError);

    void on_btn_send_clicked();

private:
    Ui::Tcpclient *ui;
    void init();
    QTcpSocket* myclient;
};
#endif // TCPCLIENT_H

服务器端:

#ifndef TCPSERVER_H
#define TCPSERVER_H

#include <QMainWindow>
#include <QTcpServer>
#include <QTcpSocket>
#include <QNetworkInterface>
#include <QList>
QT_BEGIN_NAMESPACE
namespace Ui {
    
     class tcpserver; }
QT_END_NAMESPACE

class tcpserver : public QMainWindow
{
    
    
    Q_OBJECT

public:
    tcpserver(QWidget *parent = nullptr);
    ~tcpserver();

private slots:
    void on_btn_connect_clicked();
    void doprocessOnConnect();
    void doprocessOnConnectError(QAbstractSocket::SocketError);
    void doprocessOnDisconnect();
    void doprocessOnReadyRead();
    void on_btn_send_clicked();
    void doprocessOnConnected();

private:
    Ui::tcpserver *ui;
    QTcpServer* myserver;
    QList<QTcpSocket*>clients;
    void init();

};
#endif // TCPSERVER_H

完整实现:
https://github.com/galactic123/TcpChatRoom

猜你喜欢

转载自blog.csdn.net/naiue/article/details/114053324