当前位置: 首页 > news >正文

自己做效果图的网站网页制作免费网站制作

自己做效果图的网站,网页制作免费网站制作,网站建设人员工作计划,wordpress主题ftp测试内容: 客户端: 1 连接服务器 2 发送数据 3 处理错误信号 4 监听断开信号 5 接收服务器的数据 服务器: 1 监听等待客户端连接 2 向指定的客户端发送数据 4 监听断开信号 5 接收客户端的数据 测试界面 工程文件.pro添加的内容:…

测试内容:

客户端:

1 连接服务器

2 发送数据

3 处理错误信号

4 监听断开信号

5 接收服务器的数据

 服务器:

1 监听等待客户端连接

2 向指定的客户端发送数据

4 监听断开信号

5 接收客户端的数据

测试界面

工程文件.pro添加的内容:

QT += network websockets

 widget.h文件的内容

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QWebSocketServer>
#include <QWebSocket>
#include <QHostAddress>
#include <QDebug>
#include <QVariant>QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);QWebSocketServer *m_server = nullptr;QWebSocket *m_webSocket_client = nullptr;~Widget();private slots:void on_pushButton_clicked();void on_pushButton_2_clicked();void on_pushButton_3_clicked();void on_pushButton_6_clicked();void on_pushButton_5_clicked();
private:Ui::Widget *ui;
};
#endif // WIDGET_H

窗体构造函数:

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);m_server = new QWebSocketServer(QStringLiteral("My Server"),QWebSocketServer::NonSecureMode);//处理QWebSocketServer的closed信号connect(m_server, &QWebSocketServer::closed, this, [this](){QWebSocketServer *server = (QWebSocketServer*)sender();while(ui->comboBox->count() > 0){QVariant socketVariant = ui->comboBox->itemData(0);QWebSocket *socket = qvariant_cast<QWebSocket *>(socketVariant);QString item_txt = QString("delete client:%1:%2").arg(socket->peerAddress().toString()).arg(socket->peerPort());ui->textBrowser_4->append(item_txt);socket->close();ui->comboBox->removeItem(0);}});//处理QWebSocketServer的newConnection信号connect(m_server, &QWebSocketServer::newConnection, this, [this](){QWebSocketServer *server = (QWebSocketServer*)sender();QWebSocket *socket = server->nextPendingConnection();connect(socket, &QWebSocket::textMessageReceived, this, [this](const QString &message){this->ui->textBrowser_4->append(message);});//处理QWebSocketServer的新连接客户端的断开信号,用于删除列表框connect(socket,&QWebSocket::disconnected,this,[this](){this->ui->textBrowser_4->append("client disconnected success");QWebSocket *socket = (QWebSocket *)sender();for(int i = 0;i < ui->comboBox->count();i++){QVariant socketVariant = ui->comboBox->itemData(i);QWebSocket *webSocket = qvariant_cast<QWebSocket *>(socketVariant);if(socket == webSocket){ui->comboBox->removeItem(i);break;}}});QString item_txt = QString("%1:%2").arg(socket->peerAddress().toString()).arg(socket->peerPort());QVariant socketVariant = QVariant::fromValue(socket);ui->comboBox->addItem(item_txt,socketVariant);ui->textBrowser_4->append(QString("get a new client %1").arg(item_txt));});//初始化客户端和它的信号m_webSocket_client = new QWebSocket;connect(m_webSocket_client,&QWebSocket::connected,this,[this](){QWebSocket *socket = (QWebSocket*)sender();QString server_info = QString("connect %1:%2 ok").arg(socket->peerAddress().toString()).arg(socket->peerPort());this->ui->textBrowser_2->append(QString("connect server:%1 success").arg(server_info));});connect(m_webSocket_client,&QWebSocket::disconnected,this,[this](){this->ui->textBrowser_2->append("client disconnected success");});connect(m_webSocket_client,QOverload<QAbstractSocket::SocketError>::of(&QWebSocket::error),this,[this](QAbstractSocket::SocketError error){this->ui->textBrowser_2->append(QString("error:%1").arg(error));});connect(m_webSocket_client, &QWebSocket::textMessageReceived, this, [this](const QString &message){this->ui->textBrowser_2->append(message);});
}

客户端按钮

连接按钮

void Widget::on_pushButton_2_clicked()
{//QUrl serverUrl(QLatin1String("ws://127.0.0.1:12345"));QUrl serverUrl(QLatin1String(this->ui->lineEdit->text().toLatin1()));qDebug() << "begin connect " << serverUrl.toString();m_webSocket_client->open(serverUrl);
}

发送按钮

void Widget::on_pushButton_3_clicked()
{if(m_webSocket_client->state() == QAbstractSocket::ConnectedState){m_webSocket_client->sendTextMessage(this->ui->lineEdit_2->text());}
}

断开按钮 

void Widget::on_pushButton_clicked()
{if(m_webSocket_client->state() == QAbstractSocket::ConnectedState){m_webSocket_client->close();}
}

服务器按钮

 监听按钮

执行m_server->close();竟然不能关闭已经连接的客户端,后来在closed槽中又做了关闭处理。

void Widget::on_pushButton_5_clicked()
{if(m_server->isListening()){m_server->close();ui->pushButton_5->setText(tr("listen"));return;}if(m_server->listen(QHostAddress::Any,ui->lineEdit_4->text().toInt())){qDebug() << "listen port : " << m_server->serverPort() << " ok";ui->pushButton_5->setText(tr("stop"));}else{qCritical() << "listen port : " << m_server->serverPort() << " fail";ui->pushButton_5->setText(tr("listen"));}
}

发送按钮

根据combo列表的选项,向对应的客户端发送消息

void Widget::on_pushButton_6_clicked()
{int index = ui->comboBox->currentIndex();QVariant socketVariant = ui->comboBox->itemData(index);QWebSocket *current_client = qvariant_cast<QWebSocket *>(socketVariant);if(current_client->state() == QAbstractSocket::ConnectedState){current_client->sendTextMessage(this->ui->lineEdit_5->text());qDebug() << "send:" << this->ui->lineEdit_5->text();}else{ui->comboBox->removeItem(index);}
}

小结

http://www.yayakq.cn/news/659758/

相关文章:

  • 勒流顺德网站建设企业品牌网站建设的关键事项
  • 网站建设需求模版有没有专门做联谊的网站
  • 商务网站构建与维护优质服务的网站设计制作
  • ps网站设计全程绝密商场商城网站建设方案
  • 广东广州自己建网站公司做网站在厦门排前5名
  • 免费网站怎么盈利模式WordPress导航主页
  • 如何用手机做网站吗深圳新型材料网站建设
  • 装修公司网站设计网站前端如何做兼职
  • 百度网站建设微信封面专注苏州网站建设
  • 汉中网站设计惠州seo快速排名
  • 织梦做淘宝客网站视频汕头个人网站推广建设
  • 成功的电子商务网站设计微信管理系统平台电话
  • 个人制作网站工具wordpress个性评论框
  • 西安网站建设制作 熊掌号wordpress 链接新窗口
  • 网站建设教程 金旭亮企业推广语句
  • 深圳多语言网站建设英文网站建设平台
  • 关于建设公司网站的申请抖音代运营公司简介
  • 做cad模板下载网站网站后台管理系统html
  • 北京网站制作公司飞沐html5的优点
  • wordpress模板 户外钓鱼类网站旅行社网页设计
  • 网站开发用笔记本电脑网站开发及app开发公司
  • 有源代码怎么做网站石城县网站建设
  • 安徽网站建设cnfg安徽合肥建设银行招聘网站
  • 用织梦建设网站的步骤网站建设公司招人
  • 怎么样免费做公司网站湘潭简单的网站建设公司
  • 用360打开自己做的网站有广告网站分享到朋友圈代码
  • 河南网站建设设计价格wordpress怎么改后台密码
  • 网站开发与设计实验报告wordpress 页面 编辑
  • 江西医疗网站建设网盘资源共享群吧
  • 济宁网站建设哪家好简易做海报网站