Qt,设计小型多客户端,多线程,互斥,可收发tcp服务端

  • Post author:
  • Post category:其他


Tcp服务端,实现了多线程,多客户端,互斥,链表,高并发,接收数据,按文件夹分类写入到文件中,是一个用于调试接收打印log,debug等数据的小型tcp服务器。

总体界面

界面Widget,关键逻辑代码

TcpSerWidget::TcpSerWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::TcpSerWidget)
{
    //设置相关ui界面
    ui->setupUi(this);
    //初始化界面关联和触发
    Init();
    m_TcpSerFlg=0;
    m_pTcpserver = new MyTcpServer;
    //关联客户端收到的数据,刷新到界面
    connect(m_pTcpserver,&MyTcpServer::SendToWidget,this,&TcpSerWidget::ClientInfoSlots);
}
void TcpSerWidget::Init(){
    //IplineEdit,监听端口
    //只输入整数
    //QRegExp regx("[a-zA-Z0-9]+$");
    QRegExp regx("[0-9]+$");
    QValidator *validator = new QRegExpValidator(regx, ui->IplineEdit );
    ui->IplineEdit->setValidator(validator);
    //默认显示
    ui->IplineEdit->setPlaceholderText("端口");

    //plainTextEdit,发送数据窗口
    //文本改变触发函数
    connect(ui->plainTextEdit,SIGNAL(textChanged()),this,SLOT(plainTextEdit_send_textChanged()));
    ui->plainTextEdit->setPlaceholderText("输入需要发送的数据(最大256字节)");

    //pushButton,监听端口
    //触发函数
    connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(SerListen_pushButton_clicked()));

    //pushButton_2,发送数据按钮
    //触发函数
    connect(ui->pushButton_2,SIGNAL(clicked()),this,SLOT(pushButton_send_clicked()));

    //ui->textEdit->setFontPointSize(13);
}
//获取本地地址和设置的端口,启动服务器监听
void TcpSerWidget::SerListen_pushButton_clicked(){
    //ui->MesglineEdit->setText(QString(socket->readAll()));
    QString port_qstr=ui->IplineEdit->text();
    quint16 port=port_qstr.toUShort();
    if(port<30000||port>50000){
        port=PORT;
    }
    qDebug("SerListen_pushButton_clicked,port:%s,%d\n",port_qstr.toStdString().c_str(),port);
    if(m_TcpSerFlg!=1){
        //启动日志监听服务

        //监听任何IPv4地址
        m_pTcpserver->listen(QHostAddress::AnyIPv4,port);
        //m_pTcpserver->start()



版权声明:本文为wutu_csdn_blog原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。