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

网站建设技术进行开发爱站查询

网站建设技术进行开发,爱站查询,亚马逊店铺怎么注册流程,重庆高端网站开发1、概述 QWebSocketServer 是 Qt 框架中用于处理 WebSocket 服务器端的类。它允许开发者创建 WebSocket 服务器,接受客户端的连接,并与之进行双向通信。WebSocket 是一种在单个 TCP 连接上进行全双工通讯的协议,它使得客户端和服务器之间的数…
1、概述

QWebSocketServer 是 Qt 框架中用于处理 WebSocket 服务器端的类。它允许开发者创建 WebSocket 服务器,接受客户端的连接,并与之进行双向通信。WebSocket 是一种在单个 TCP 连接上进行全双工通讯的协议,它使得客户端和服务器之间的数据交换变得更加简单和高效。

QWebSocketServer 提供了 WebSocket 服务器所需的基本功能,包括监听端口、接受连接、发送和接收消息等。它通常与 QWebSocket 类一起使用,后者表示一个 WebSocket 连接,并提供了与该连接进行交互的方法。

2、重要方法

QWebSocketServer 类的重要方法包括但不限于:

  • QWebSocketServer(const QString &serverName, QWebSocketServer::NonSecureMode serverType = NonSecureMode, QObject *parent = nullptr): 构造函数,创建一个 WebSocket 服务器实例。
  • bool listen(const QHostAddress &address = QHostAddress::Any, quint16 port = 0): 使服务器监听指定的地址和端口。
  • void close(): 关闭服务器,停止监听连接。
  • QList<QWebSocket *> clients() const: 返回当前连接到服务器的所有客户端列表。
  • bool hasPendingConnections() const: 检查是否有等待接受的连接。
  • QWebSocket *nextPendingConnection(): 接受一个等待中的连接,并返回一个新的 QWebSocket 对象来表示该连接。
  • QString serverName() const: 返回服务器的名称。
  • QWebSocketServer::WebSocketServerState state() const: 返回服务器的当前状态(如监听中、关闭等)。
3、重要信号

QWebSocketServer 类的重要信号包括:

  • newConnection(): 当有新的客户端连接请求时发出。
  • acceptError(QAbstractSocket::SocketErrors socketError):当连接出现错误时发出信号。
  • serverError(0WebSocketProtocol::CloseCode closeCode):当服务器发生错误时发出信号。

4、常用枚举类型

以下是 QWebSocketServer类中一些常用的枚举类型及其简要介绍:
QWebSocketServer::SslMode: SSL 模式。

  • SslMode::NonSecureMode:不支持SSL/TLS
  • SslMode::SecureMode:支持SSL/TLS

5、实现 SSL/TLS 加密
QWebSocketServer 支持 SSL/TLS 加密以提供安全的WebSocket 连接。为了实现SSL/TLS,您需要配置合适的证书和密钥:

QWebSocketServer server("Secure WebSocket Server", QWebSocketServer::SecureMode);
QSslConfiguration sslConfiguration;
sslConfiguration.setLocalCertificate(QStringLiteral("server.crt"));
sslConfiguration.setPrivateKey(QStringLiteral("server.key"));
server.setSslConfiguration(sslConfiguration);

if (server.listen(QHostAddress::Any, 1234)) {
    qDebug() << "Secure WebSocket server listening on port 1234.";
}

//.h
class MyWebSocketClient : public QObject {Q_OBJECTpublic:MyWebSocketClient(QObject *parent = nullptr) : QObject(parent), m_pWebSocket(nullptr) {m_pWebSocket = new QWebSocket();// 连接服务器QUrl serverUrl("ws://localhost:12345"); // 替换为实际的服务器URLm_pWebSocket->open(serverUrl);// 连接信号和槽connect(m_pWebSocket, &QWebSocket::connected, this, &MyWebSocketClient::onConnected);connect(m_pWebSocket, &QWebSocket::disconnected, this, &MyWebSocketClient::onDisconnected);connect(m_pWebSocket, QOverload<QAbstractSocket::SocketError>::of(&QWebSocket::error), this, &MyWebSocketClient::onError);connect(m_pWebSocket, &QWebSocket::textMessageReceived, this, &MyWebSocketClient::onTextMessageReceived);}~MyWebSocketClient() {m_pWebSocket->close();}private slots:void onConnected() {qDebug() << "Connected to WebSocket server";// 发送消息给服务器QString message = "Hello, WebSocket server!";m_pWebSocket->sendTextMessage(message);}void onDisconnected() {qDebug() << "Disconnected from WebSocket server";}void onError(QAbstractSocket::SocketError error) {qDebug() << "WebSocket error:" << error;}void onTextMessageReceived(QString message) {qDebug() << "Received message from WebSocket server:" << message;}private:QWebSocket *m_pWebSocket;
};class WebSocketServer : public QObject
{Q_OBJECTpublic:explicit WebSocketServer(quint16 port=12345, QObject *parent = nullptr);~WebSocketServer();private slots:void onNewConnection();void onTextMessageReceived(const QString &message);void onDisconnected();private:QWebSocketServer *m_server;QList<QWebSocket *> m_clients;
};/************************************/
//.cpp
WebSocketServer::WebSocketServer(quint16 port, QObject *parent): QObject(parent),m_server(new QWebSocketServer(QStringLiteral("WebSocket Server"), QWebSocketServer::NonSecureMode, this))
{if (m_server->listen(QHostAddress::Any, port)) {qDebug() << "WebSocket server listening on port" << port;connect(m_server, &QWebSocketServer::newConnection, this, &WebSocketServer::onNewConnection);} else {qDebug() << "Error: Unable to start the WebSocket server:" << m_server->errorString();}
}WebSocketServer::~WebSocketServer()
{m_server->close();qDeleteAll(m_clients.begin(), m_clients.end());
}void WebSocketServer::onNewConnection()
{QWebSocket *client = m_server->nextPendingConnection();connect(client, &QWebSocket::textMessageReceived, this, &WebSocketServer::onTextMessageReceived);connect(client, &QWebSocket::disconnected, this, &WebSocketServer::onDisconnected);m_clients << client;qDebug() << "New client connected.";
}void WebSocketServer::onTextMessageReceived(const QString &message)
{QWebSocket *client = qobject_cast<QWebSocket *>(sender());qDebug() << "Message received:" << message;client->sendTextMessage("Echo: " + message);
}void WebSocketServer::onDisconnected()
{QWebSocket *client = qobject_cast<QWebSocket *>(sender());if (client) {m_clients.removeAll(client);client->deleteLater();qDebug() << "Client disconnected.";}
}

觉得有帮助的话,打赏一下呗。。

           

http://www.hrbkazy.com/news/9443.html

相关文章:

  • 信用中国 网站谁建设的黑帽seo365t技术
  • 保定网站建设公司广告联盟
  • 超能搜索引擎系统网站外贸网站营销推广
  • 舟山 做企业网站今日热搜前十名
  • 科技兴国河南纯手工seo
  • 集团网站建设 中企动力企业网站建设的作用
  • 武汉网站公司怎么样的seo排名工具
  • 服务公司起名搜索引擎优化seo信息
  • 北京市网站开发1000个关键词
  • php工具箱是直接做网站的吗山东seo多少钱
  • 绑定网站域名怎么做windows7优化大师官方下载
  • 做网站一般长宽多少网站模板源码
  • dw网站制作素材市场营销专业
  • wordpress notebook 主题seo研究中心好客站
  • 东莞建站网站百度一下你就知道啦
  • 上海网页设计公司推荐长尾词优化外包
  • 柳州最好的网站推广公司百度企业查询
  • 网站建设一般报价多少钱只需要手机号的广告
  • 网上开店网站ip切换工具
  • 做网站赚钱缴税吗网络推广优化工具
  • pdomysql wordpress小学生班级优化大师
  • wordpress做导航网站网络营销概念
  • 南京 郑州网站建设公司 网络服务网站制作流程是什么
  • 上海大型网站开发公司网站友情链接出售
  • 中国企业网站建设现状腾讯广告平台
  • 网站建设书本信息seo优化入门教程
  • wordpress 商业版权seo公司是什么
  • 台州哪家做企业网站比较好精准信息300099
  • 增城百度做网站多少钱如何做电商
  • 潍坊设计网站在线培训系统平台