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

百度云网站开发wordpress 米课

百度云网站开发,wordpress 米课,wordpress安装微信聊天工具,wordpress 侧栏 位置测试环境 本文选用pc1作为客户端#xff0c;pc2#xff0c;以及一台虚拟机作为服务端。 pc1,pc2(客户端#xff09;: 虚拟机#xff08;服务端)#xff1a; 客户端 原理#xff1a;客户端通过发送广播消息信息到ip:255.255.255.255(QHostAddress::Broadcast),局域网…测试环境 本文选用pc1作为客户端pc2以及一台虚拟机作为服务端。 pc1,pc2(客户端: 虚拟机服务端) 客户端 原理客户端通过发送广播消息信息到ip:255.255.255.255(QHostAddress::Broadcast),局域网内的所有设备收到该消息回复客户端即可。客户端通过收到的回复统计当前有哪些设备在线。获取到本地的IPgetLocalIP函数获取到过滤了虚拟机网卡以及本地回环网卡后的ip地址。 #include udpclient.h #include QDebug #include QHostInfo #include QNetworkInterface #include iostreamudpClient::udpClient(QObject *parent) : QObject(parent) {QString localIp getLocalIP();udpSocket new QUdpSocket;udpSocket-bind(QHostAddress(localIp),2001);connect(udpSocket,QUdpSocket::readyRead,this,udpClient::processData);}QString udpClient::getLocalIP() {QListQNetworkInterface interfaces QNetworkInterface::allInterfaces();foreach (const QNetworkInterface interface, interfaces) {QListQNetworkAddressEntry entries interface.addressEntries();qDebug()name:interface.humanReadableName()endl;if(interface.humanReadableName().contains(Loopback) ||interface.humanReadableName().contains(VMware Network Adapter)){continue;}foreach (const QNetworkAddressEntry entry, entries) {if (entry.ip().protocol() QAbstractSocket::IPv4Protocol) {qDebug() Local IP Address: entry.ip().toString() endl;}}}return QString(); }udpClient::~udpClient() {if(udpSocket){delete udpSocket;} }void udpClient::sendBroadCast() {QByteArray datagram Device Discovery;udpSocket-writeDatagram(datagram,QHostAddress::Broadcast,8888); }void udpClient::processData() {while(udpSocket-hasPendingDatagrams()){QByteArray datagram;datagram.resize(udpSocket-pendingDatagramSize());QHostAddress sender;quint16 senderPort;udpSocket-readDatagram(datagram.data(), datagram.size(), sender, senderPort);qDebug() Received response from: sender.toString()port:senderPort endl;} } 服务端 #include udpserver.h #include iostreamudpServer::udpServer(QObject *parent) : QObject(parent) {udpSocket new QUdpSocket(this);udpSocket-bind(QHostAddress::Any, 8888);connect(udpSocket, QUdpSocket::readyRead, this, udpServer::processPendingDatagrams);}void udpServer::processPendingDatagrams() {while (udpSocket-hasPendingDatagrams()) {QByteArray datagram;datagram.resize(udpSocket-pendingDatagramSize());QHostAddress sender;quint16 senderPort;udpSocket-readDatagram(datagram.data(), datagram.size(), sender, senderPort);std::cout Received discovery message: datagram.data() std::endl;QByteArray response Device Found;udpSocket-writeDatagram(response, sender, senderPort);} } 输出效果 优化 对客户端增加定时器同时将客户端对象移动到一个线程中这样就可以定时轮询设备发现了。 #include udpclient.h #include QDebug #include QHostInfo #include QNetworkInterface #include iostream #include QTimer #include QThreadudpClient::udpClient(QObject *parent) : QObject(parent) {qDebug()thread id1:QThread::currentThreadId()endl; }void udpClient::createSocket() {qDebug()thread id2:QThread::currentThreadId()endl;QString localIp getLocalIP();udpSocket new QUdpSocket;udpSocket-bind(QHostAddress(localIp),2001);connect(udpSocket,QUdpSocket::readyRead,this,udpClient::processData); }QString udpClient::getLocalIP() {QListQNetworkInterface interfaces QNetworkInterface::allInterfaces();foreach (const QNetworkInterface interface, interfaces) {QListQNetworkAddressEntry entries interface.addressEntries();qDebug()name:interface.humanReadableName()endl;if(interface.humanReadableName().contains(Loopback) ||interface.humanReadableName().contains(VMware Network Adapter)){continue;}foreach (const QNetworkAddressEntry entry, entries) {if (entry.ip().protocol() QAbstractSocket::IPv4Protocol) {qDebug() Local IP Address: entry.ip().toString() endl;}}}return QString(); }udpClient::~udpClient() {if(udpSocket){delete udpSocket;} }void udpClient::sendBroadCast() {QByteArray datagram Device Discovery;udpSocket-writeDatagram(datagram,QHostAddress::Broadcast,8888);qDebug()sendBroadCast,thread id:QThread::currentThreadId()endl; }void udpClient::processData() {while(udpSocket-hasPendingDatagrams()){QByteArray datagram;datagram.resize(udpSocket-pendingDatagramSize());QHostAddress sender;quint16 senderPort;udpSocket-readDatagram(datagram.data(), datagram.size(), sender, senderPort);result.push_back(IpInfo(sender.toString(),senderPort));qDebug() Received response from: sender.toString()port:senderPort endl;} }void tcpConnect(QString ip, quint16 port) {}#include widget.h #include ui_widget.h #include QTimer #include QEventLoopWidget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui-setupUi(this);client new udpClient;connect(ui-pushButton,QPushButton::clicked,client,udpClient::sendBroadCast);thread new QThread;connect(thread,QThread::finished,client,QObject::deleteLater);connect(thread,QThread::started,client,udpClient::createSocket);client-moveToThread(thread);timer new QTimer(this);connect(timer,QTimer::timeout,client,udpClient::sendBroadCast);timer-setInterval(500);thread-start(); // QEventLoop loop; // QTimer::singleShot(500,loop,QEventLoop::quit); // loop.exec();timer-start();qDebug()thread id:QThread::currentThreadId()endl; }Widget::~Widget() {delete ui;thread-quit();thread-wait();delete thread;threadnullptr; }
http://www.w-s-a.com/news/255972/

相关文章:

  • 可以接项目做的网站网站源码php
  • 杭州广众建设工程有限公司网站网页游戏人气排行榜
  • 上海网站开发建设最简单的网站代码
  • 东莞做网站建设免费网站建设案例
  • 莱州建设局网站wordpress的主题下载地址
  • 二级网站域名长沙企业关键词优化服务质量
  • 在家有电脑怎么做网站wordpress 入门主题
  • 什邡建设局网站sem推广是什么意思
  • 西安分类信息网站网站敏感关键词
  • 黑彩网站怎么做建设网站费用分析
  • 网站关键词选取的步骤和方法小程序商城哪家好排行榜
  • 儿童产品网站建设网站建设优化排名推广
  • 做网站的硬件无锡招标网官方网站
  • 做推送好用的网站合肥网站推广培训
  • 网站开发团队简介贵阳双龙区建设局网站
  • 新乡做网站公司哪家好wordpress侧边栏文件
  • 小白建站怎么撤销网站备案
  • 哪个网站做调查问卷赚钱短视频制作神器
  • 上海企业响应式网站建设推荐汕头网络优化排名
  • 怎么建立公司网站平台怎么将网站做成公司官网
  • 培训学校网站怎样快速建设网站模板
  • 建设电子商务网站论文云服务器安装wordpress
  • 做展板好的网站学校的网站开发过程
  • 宁波搭建网站价格西部数码网站正在建设中是什么意思
  • 吉林省建设项目招标网站苏州网络推广定制
  • 网站域名所有权证明引流推广接单
  • 做网站百度百科孟州网站建设
  • 服务网站建设企业广州模板建站系统
  • 怎么做属于自己的免费网站浏览器游戏网址
  • 上海城乡住房建设厅网站西安网站推广慧创科技