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

中国建设银行招投标网站/创建个人网站的流程

中国建设银行招投标网站,创建个人网站的流程,b2c购物网站设计,深圳网站制作长沙概 述 WebSockets 是一种通过单个 TCP 连接提供全双工通信信道的 web 技术。2011年,IETF 将 WebSocket 协议标准化为 RFC 6455 。Qt 提供的 QWebSocket 既可以用于客户端应用程序,也可以用于服务端应用程序,接口大部分和 QTcpSocket 一致。 …

概 述

WebSockets 是一种通过单个 TCP 连接提供全双工通信信道的 web 技术。2011年,IETF 将 WebSocket 协议标准化为 RFC 6455 。Qt 提供的 QWebSocket 既可以用于客户端应用程序,也可以用于服务端应用程序,接口大部分和 QTcpSocket 一致。
QWebSocket 当前不支持 WebSocket 扩展和 WebSocket 子协议,仅支持 WebSocket 协议的版本13 (如 RFC 6455 中所述)。

QWebSocketServer的基本使用

要使用 Qt 的 WebSocket 模块,先在 pro 文件中加上 websockets:

QT += websockets

运行界面如下:
在这里插入图片描述
创建QWebSocketServer 对象创建

 m_WebSocketServer = new QWebSocketServer(u8"server", QWebSocketServer::NonSecureMode);

启动webSocketServer 的监听
请在监听客户端连接事件响应。

    if (m_WebSocketServer->listen(QHostAddress(ip), port.toInt())){ui.textEdit_RecvMsg->append(u8"服务开启成功");ui.btnOpenServer->setEnabled(false);connect(m_WebSocketServer, SIGNAL(newConnection()), this, SLOT(onNewConnection()));}else{QMessageBox::information(this, u8"提示", u8"监听失败, 是否开启了代理,或者IP错误");}

客户端连接后响应函数处理

void WebsocketServerDemo::onNewConnection()
{pSocket = m_WebSocketServer->nextPendingConnection();m_clients << pSocket;connect(pSocket, SIGNAL(textMessageReceived(QString)), this, SLOT(processTextMessage(QString)));connect(pSocket, SIGNAL(disconnected()), this, SLOT(socketDisconnected()));QString peerName = pSocket->requestUrl().toString();cout << "peerName = " << peerName.toStdString() << endl;//将ip和socket保存到mapmapSocket[peerName] = pSocket;ui.listWidget_OnlineUser->addItem(peerName);
}

消息处理函数

//处理接收到的消息
void WebsocketServerDemo::processTextMessage(QString message) 
{QString time = current_date_time->currentDateTime().toString("yyyy.MM.dd hh:mm:ss.zzz ddd");QString item = pSocket->requestUrl().toString();ui.textEdit_RecvMsg->append(time + "" + item + "\n" + message);//处理消息转发//...}

客户端断开连接处理函数

//客户端连接断开的操作
void WebsocketServerDemo::socketDisconnected() 
{for (auto sk : m_clients){if (!sk->isValid()){QString temp_key;ui.textEdit_RecvMsg->append("map size = " + QString(mapSocket.size()) + "\n");for (auto it = mapSocket.begin(); it!=mapSocket.end(); it++){if (it.value() == sk){//删除项QList<QListWidgetItem*> list;list = ui.listWidget_OnlineUser-> findItems(it.key(), Qt::MatchCaseSensitive);QListWidgetItem* sel = list[0];int r = ui.listWidget_OnlineUser->row(sel);QListWidgetItem* item = ui.listWidget_OnlineUser->takeItem(r);ui.listWidget_OnlineUser->removeItemWidget(item);delete item;m_clients.removeOne(sk);QString time = current_date_time->currentDateTime().toString("yyyy.MM.dd hh:mm:ss.zzz ddd");ui.textEdit_RecvMsg->append(time + "" + it.key() + "下线了\n");temp_key = it.key();}}mapSocket.remove(temp_key);ui.textEdit_RecvMsg->append("after remove, map size = " + QString(mapSocket.size()) + "\n");}}
}

变量和参数定义

#include <QtWidgets/QWidget>
#include "ui_WebsocketServer.h"
#include <QWebSocketServer>
#include <QWebSocket>
#include <QMap>class WebsocketServerDemo : public QWidget
{Q_OBJECTpublic:WebsocketServerDemo(QWidget *parent = Q_NULLPTR);~WebsocketServerDemo();private slots:void on_btnOpenServer_clicked();void on_btnCloseServer_clicked();void on_btnSend_clicked();void onNewConnection();void processTextMessage(QString message);void socketDisconnected();private:Ui::WebsocketServerClass ui;QWebSocketServer* m_WebSocketServer = nullptr;QList<QWebSocket*> m_clients;bool m_debug;QWebSocket* pSocket;QDateTime* current_date_time;QMap<QString, QWebSocket*> mapSocket;
};

QWebSocketClinet的基本使用

对于客户端,只需要指定服务端的 Url。通过 open 函数连接服务端的 Url ,使用 close 关闭连接。数据到来的时候有 textMessageReceived 和 binaryMessageReceived 等信号触发,也可以调用 sendTextMessage 或 sendBinaryMessage 发送数据。
在这里插入图片描述

连接服务器并监听连接、断开、消息接收消息的函数。

    m_websocket.open(url);connect(&m_websocket, SIGNAL(connected()), this, SLOT(onconnected()));connect(&m_websocket, SIGNAL(disconnected()), this, SLOT(closeConnection()));connect(&m_websocket, SIGNAL(textMessageReceived(QString)), this, SLOT(onTextMessageReceived(QString)));

客户端连接函数处理

//连接上之后
void WebSocketClientDemo::onconnected() 
{ui.label_ConnectStatus->setText(tr("connected"));ui.btnConnect->setEnabled(false);ui.btnDisconnect->setEnabled(true);
}

客户端函数处理
主要处理的是界面上的显示

//断开连接操作
void WebSocketClientDemo::closeConnection() 
{   ui.label_ConnectStatus->setText("disconnected");
}

消息接收处理

//收到消息
void WebSocketClientDemo::onTextMessageReceived(const QString& message)
{QString time = current_date_time->currentDateTime().toString("yyyy.MM.dd hh:mm:ss.zzz ddd");ui.textEdit_recv->setText(time + "\n" + message);
}

变量和参数定义

#include <QtWidgets/QWidget>
#include "ui_WebSocketClientDemo.h"
#include <QLineEdit>
#include <QLabel>
#include <QTextEdit>
#include <QListWidget>
#include <QPushButton>
#include <QSpinBox>
#include <QButtonGroup>
#include <QObject>
#include <QWidget>
#include <QUrl>
#include <time.h>
#include <QByteArray>
#include <QWebSocket>class WebSocketClientDemo : public QWidget
{Q_OBJECTpublic:WebSocketClientDemo(QWidget *parent = Q_NULLPTR);~WebSocketClientDemo();private slots:void on_btnConnect_clicked();void on_btnDisconnect_clicked();void on_btnSend_clicked();void onconnected();void onTextMessageReceived(const QString& message);void closeConnection();    private:Ui::WebSocketClientDemoClass ui;QUrl m_url;QWebSocket m_websocket;bool m_debug;QDateTime* current_date_time;
};

总结:

1、该示例代码简单实现了webSocketServer的创建。但是并没有用到多线程的技术,所以对并发处理不不适合。

2、本示例对数据处理,和错误事件并没有很好的解析,这需要后续实现。

http://www.jmfq.cn/news/5126329.html

相关文章:

  • 企业网站建设网站优化/网站seo技术
  • 美国站点网站怎么做/百度云手机登录入口
  • discuz安装教程/北京seo外包公司要靠谱的
  • 四川做文学有关的网站/seo是什么
  • 自驾游网站建设/正安县网站seo优化排名
  • 山东省建设局注册中心网站/seo岗位是什么意思
  • 学风建设网站版块/百度竞价被点击软件盯上
  • 廊坊制作网站公司/如何制作自己的网站?
  • 网络营销是网上销售吗/seo关键词排名优化矩阵系统
  • 北京网站建设设计公司/百度收录批量提交入口
  • 网站备案 多少钱/站长工具seo优化
  • 网站建建设公司和网络自建/seo优化关键词排名优化
  • 网站需要怎么做的吗/最近国际新闻大事20条
  • 重庆网站建站系统/网络公司优化关键词
  • 网站建设和app开发/免费下载百度seo
  • 介绍旅游美食的网站模板/网站提交入口
  • 湖北网站建设优化/网络营销岗位职责和任职要求
  • 电商实训网站建设报告/seo在哪学
  • 新增专业建设规划/百度词条优化
  • 网站浏览成交指标/电商网店
  • 北京网站设计推荐刻/网站如何赚钱
  • 资讯类网站建设/广州网站设计建设
  • 乐营销网站/seo技术培训泰州
  • 网站布局策划/培训机构网站
  • 0基础做网站/最新国际新闻事件
  • 马云做网站最早/爱站网长尾关键词挖掘工具电脑版
  • 有什么网站建设比较好的公司/百度竞价排名机制
  • 怎么为自己公司做网站/店铺在百度免费定位
  • 欢迎访问中国建设银行网站个人客户/昆明网站开发推广公司
  • 秦皇岛网络优化排名/长尾词seo排名优化