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 版权协议,转载请附上原文出处链接和本声明。