#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
setWindowTitle(QStringLiteral("服务端"));
m_WebSocketServer = new QWebSocketServer("server", QWebSocketServer::NonSecureMode);
connect(m_WebSocketServer, SIGNAL(newConnection()), this, SLOT(onNewConnection()));
connect(ui->startButton, SIGNAL(clicked(bool)), this, SLOT(onStartButtonClick()));
connect(ui->stopButton, SIGNAL(clicked(bool)), this, SLOT(onStopButtonClick()));
connect(ui->cleanButton, SIGNAL(clicked(bool)), this, SLOT(onCleanButtonClick()));
connect(ui->sendButton, SIGNAL(clicked(bool)), this, SLOT(onSendButtonClick()));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::onStartButtonClick()
{
int i_port = ui->monitorSpinBox->text().toInt();
m_WebSocketServer->listen(QHostAddress::Any, i_port);
ui->startButton->setEnabled(false);
ui->stopButton->setEnabled(true);
}
void MainWindow::onStopButtonClick()
{
ui->startButton->setEnabled(true);
ui->stopButton->setEnabled(false);
m_WebSocketServer->close();
}
void MainWindow::onSendButtonClick()
{
QString msg = ui->sendTextedit->document()->toPlainText();
for (int i=0;i<m_clients.size();i++)
{
m_clients.at(i)->sendTextMessage(msg);
}
}
void MainWindow::onCleanButtonClick()
{
ui->receiveTextEdit->clear();
}
void MainWindow::onNewConnection()
{
ui->startButton->setEnabled(false);
ui->stopButton->setEnabled(true);
ui->sendTextedit->setEnabled(true);
ui->sendButton->setEnabled(true);
ui->cleanButton->setEnabled(true);
pSocket = m_WebSocketServer->nextPendingConnection();
connect(pSocket, SIGNAL(textMessageReceived(QString)), this, SLOT(processTextMessage(QString)));
connect(pSocket, SIGNAL(disconnected()), this, SLOT(socketDisconnected()));
QString item = pSocket->peerAddress().toString();
ui->linkclientListWidget->addItem(item);
m_clients << pSocket;
}
void MainWindow::processTextMessage(QString message)
{
QString time = current_date_time->currentDateTime().toString("yyyy.MM.dd hh:mm:ss.zzz ddd");
QString item = pSocket->peerAddress().toString();
ui->receiveTextEdit->append(time + "" + item + "\n" + message);
}
void MainWindow::socketDisconnected()
{
ui->startButton->setEnabled(true);
ui->stopButton->setEnabled(false);
ui->sendButton->setEnabled(false);
ui->sendTextedit->setEnabled(false);
ui->receiveTextEdit->setEnabled(false);
ui->cleanButton->setEnabled(false);
}
评论1