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

建筑培训中心百度seo排名报价

建筑培训中心,百度seo排名报价,上市公司网站维护,卖掉的网站了对方用来做违法QT网络调试助手 1.开发流程 2.QTtcp服务器   1.1 服务端数据读取   1.2 服务端发送数据-所有客户端   1.3 服务端自动刷新ip地址   1.4 服务端检测客户端断开状态   1.5 服务端发送数据-指定特定客户端发送数据   1.6 服务端停止监听和断开 3.QTtcp客户端 1… QT网络调试助手  1.开发流程 2.QTtcp服务器   1.1 服务端数据读取   1.2 服务端发送数据-所有客户端   1.3 服务端自动刷新ip地址   1.4 服务端检测客户端断开状态   1.5 服务端发送数据-指定特定客户端发送数据   1.6 服务端停止监听和断开  3.QTtcp客户端 1.开发流程 2.QTtcp服务器 1.添加网络访问权限QT network2.创建一个新对象server new QTcpServer(this);3.当监听按钮按下后开始监听 void Widget::on_btnListen_clicked() {//2.监听bool QTcpServer::listen(const QHostAddress address QHostAddress::Any, quint16 port 0) 8888-15000//QHostAddress addr(192.168.0.101);port ui-lineEditPort-text().toUInt();if(!server-listen(QHostAddress(ui-comboBoxAddr-currentText()),port)){ //自动检测ip地址QHostAddress::AnyQMessageBox msgBox;msgBox.setWindowTitle(监听失败);msgBox.setText(端口号被占用);msgBox.exec();return;}ui-btnListen-setEnabled(false);ui-btnLineOut-setEnabled(true);ui-btnStopListen-setEnabled(true);ui-btnSend-setEnabled(true);//qDebug() QHostAddress(ui-comboBoxAddr-currentText()); }4.监听到新的newConnection()信号后对新的连接进行处理connect(server,SIGNAL(newConnection()),this,SLOT(on_newClient_connect()));void Widget::on_newClient_connect() {//所有的数据操作都是TcpSocket进行//bool QTcpServer::hasPendingConnections() const 有新的连接返回Trueif(server-hasPendingConnections()){//QTcpSocket *QTcpServer::nextPendingConnection() 返回下个连接来的connectQTcpSocket *connection server-nextPendingConnection(); //获得到的客户端连接信息都在connection里,并将信息也保存在server中qDebug() client addr: connection-peerAddress().toString() ,port: connection-peerPort();ui-textEditRev-insertPlainText(客户端地址: connection-peerAddress().toString()\n客户端端口号: QString::number(connection-peerPort()) \n);connect(connection,SIGNAL(readyRead()),this,SLOT(on_readyRead_handler()));//断开后信号void QAbstractSocket::disconnected()//connect(connection,SIGNAL(disconnected()),this,SLOT(mdisconnected()));//void QAbstractSocket::stateChanged(QAbstractSocket::SocketState socketState)connect(connection,SIGNAL(stateChanged(QAbstractSocket::SocketState)),this,SLOT(mstateChanged(QAbstractSocket::SocketState)));ui-comboBoxChildren-addItem(QString::number(connection-peerPort()));ui-comboBoxChildren-setCurrentText(QString::number(connection-peerPort()));if(!ui-btnSend-isEnabled()){ui-btnSend-setEnabled(true);}} }1.1 服务端数据读取 connect(connection,SIGNAL(readyRead()),this,SLOT(on_readyRead_handler())void Widget::on_readyRead_handler() {QTcpSocket *tmpSocket qobject_castQTcpSocket *(sender()); //获得信号的发出者QByteArray RevData tmpSocket-readAll();ui-textEditRev-insertPlainText(客户端: RevData \n);ui-textEditRev-moveCursor(QTextCursor::End); //将读取光标移动至尾部ui-textEditRev-ensureCursorVisible(); //确定光标可见 }1.2 服务端发送数据-所有客户端 在on_newClient_connect()中QTcpSocket *connection server-nextPendingConnection(); 会将信息也保存在server中server是全局变量,对server来说每一个socket都是server的child所以通过其父类QObject的FindChildren可以找到所有的socket }void Widget::on_btnSend_clicked() {//QTcpSocket *connection server-nextPendingConnection(); //获得到的客户端连接信息都在connection里,并将信息也保存在server中QListQTcpSocket * tcpSocketClients server-findChildrenQTcpSocket *();for(QTcpSocket *tmp : tcpSocketClients){//ui-textEditSend-toPlainText().toStdString().c_str()--先将QString转换成标准的c字符串,再转换成const char*型tmp-write(ui-textEditSend-toPlainText().toStdString().c_str());} } 1.3 服务端自动刷新ip地址 QNetworkInterfaceQListQHostAddress QNetworkInterface::allAddresses()//QListQHostAddress QNetworkInterface::allAddresses()QListQHostAddress address QNetworkInterface::allAddresses(); //获取地址for(QHostAddress tmp : address){if(tmp.protocol() QAbstractSocket::IPv4Protocol) //将ipv4的地址刷入comboxui-comboBoxAddr-addItem(tmp.toString());}1.4 服务端检测客户端断开状态 注每次一断开之后必须清空通道即deleteLater()否则server中会一直保留该通道1.信号void QAbstractSocket::disconnected() connect(connection,SIGNAL(disconnected()),this,SLOT(mdisconnected()));void Widget::mdisconnected() {QTcpSocket *tmpSocket qobject_castQTcpSocket *(sender()); //获得信号的发出者qDebug() client Out;ui-textEditRev-insertPlainText(客户端断开! );tmpSocket-deleteLater();}2.信号void QAbstractSocket::stateChanged(QAbstractSocket::SocketState socketState)void Widget::mstateChanged(QAbstractSocket::SocketState socketState) {QTcpSocket *tmpSocket qobject_castQTcpSocket *(sender()); //获得信号的发出者switch(socketState){case QAbstractSocket::ClosingState://case QAbstractSocket::UnconnectedState:ui-textEditRev-insertPlainText(客户端断开! );tmpSocket-deleteLater();break;} }1.5 服务端发送数据-指定特定客户端发送数据 1.因为ComboBox不提供鼠标点击刷新事件因此需要重写ComboBox的鼠标点击事件和信号void MyComboBox::mousePressEvent(QMouseEvent *e) {if(e-button() Qt::LeftButton){emit ComboBox_clicked();}QComboBox::mousePressEvent(e); }2.将控件提升为MyComboBox并绑定信号与槽connect(ui-comboBoxChildren,MyComboBox::ComboBox_clicked,this,Widget::MyComboBox_refresh);//刷新ComboBox控件内容---为ComboBox添加接入的端口void Widget::MyComboBox_refresh() {ui-comboBoxChildren-clear();QListQTcpSocket * tcpSocketClients server-findChildrenQTcpSocket *();for(QTcpSocket *tmp : tcpSocketClients){ui-comboBoxChildren-addItem(QString::number(tmp-peerPort()));}ui-comboBoxChildren-addItem(all); }2.重写发送 void Widget::on_btnSend_clicked() {//QTcpSocket *connection server-nextPendingConnection(); //获得到的客户端连接信息都在connection里,并将信息也保存在server中QListQTcpSocket * tcpSocketClients server-findChildrenQTcpSocket *();if(tcpSocketClients.isEmpty()){QMessageBox msg;msg.setText(当前无连接);msg.exec();ui-btnSend-setEnabled(false);return ;}if(ui-comboBoxChildren-currentText() ! all){QString currentname ui-comboBoxChildren-currentText();for(QTcpSocket *tmp :tcpSocketClients){if(QString::number(tmp-peerPort()) currentname){tmp-write(ui-textEditSend-toPlainText().toStdString().c_str());}}}else{for(QTcpSocket *tmp : tcpSocketClients){//ui-textEditSend-toPlainText().toStdString().c_str()--先将QString转换成标准的c字符串,再转换成const char*型tmp-write(ui-textEditSend-toPlainText().toStdString().c_str());}} } 1.6 服务端停止监听和断开 void Widget::on_btnStopListen_clicked() {QListQTcpSocket * tcpSocketClients server-findChildrenQTcpSocket *();for(QTcpSocket *tmp : tcpSocketClients){tmp-close();}server-close();ui-btnListen-setEnabled(true);ui-btnLineOut-setEnabled(false);ui-btnStopListen-setEnabled(false); }void Widget::on_btnLineOut_clicked() {on_btnStopListen_clicked();delete server;this-close(); }3.QTtcp客户端 客户端逻辑相对简单直接上代码 void Widget::on_pushButtonConnect_clicked() {//void connectToHost(const QHostAddress address, quint16 port, QIODevice::OpenMode openMode ReadWrite)client-connectToHost(ui-lineEditIp-text(),ui-lineEditPort-text().toUInt()); //连接服务器timer new QTimer(this);timer-setSingleShot(1);timer-setInterval(5000);connect(timer,SIGNAL(timeout()),this,SLOT(onTimerOut()));connect(client,SIGNAL(connected()),this,SLOT(onConnected()));//void QAbstractSocket::error(QAbstractSocket::SocketError socketError)connect(client,SIGNAL(error(QAbstractSocket::SocketError)),this,SLOT(onError(QAbstractSocket::SocketError)));this-setEnabled(false);timer-start(); }void Widget::mread_data_from_server() {setInsertColor(Qt::black, 服务器 client-readAll()); }void Widget::on_btnSend_clicked() {QByteArray sendData ui-textEditSend-toPlainText().toStdString().c_str();client-write(sendData);setInsertColor(Qt::red,客户端 sendData); }void Widget::on_pushButtonOut_clicked() {client-close();ui-textEditRev-append(断开连接\n);ui-pushButtonConnect-setEnabled(true);ui-lineEditIp-setEnabled(true);ui-lineEditPort-setEnabled(true);ui-pushButtonOut-setEnabled(false);ui-btnSend-setEnabled(false); }void Widget::onConnected() {timer-stop();this-setEnabled(true);ui-textEditRev-insertPlainText(连接成功\n);ui-pushButtonConnect-setEnabled(false);ui-lineEditIp-setEnabled(false);ui-lineEditPort-setEnabled(false);ui-pushButtonOut-setEnabled(true);ui-btnSend-setEnabled(true); }void Widget::onError(QAbstractSocket::SocketError error) {this-setEnabled(true);on_pushButtonOut_clicked(); }void Widget::onTimerOut() {ui-textEditRev-insertPlainText(连接超时);client-abort(); //放弃当前连接this-setEnabled(true);}void Widget::setInsertColor(Qt::GlobalColor color, QString str) {QTextCursor cursor ui-textEditRev-textCursor();QTextCharFormat format;QBrush brush(color);format.setForeground(brush);cursor.setCharFormat(format);cursor.insertText(str\n);ui-textEditRev-moveCursor(QTextCursor::End); //将光标移动至尾部ui-textEditRev-ensureCursorVisible(); //确定光标可见 }链接https://pan.baidu.com/s/1uI_bhvufjcuW1R6CrR9P7g 提取码3urt –来自百度网盘超级会员V5的分享
http://www.zqtcl.cn/news/924749/

相关文章:

  • 做科学小制作的视频网站怎么才能建立自己的网站啊
  • 跳蚤市场网站开发背景网站优点
  • 长春网站建设方案咨询怎么做自己的网站平台
  • 网站建设谈单技巧做网站建设科技公司
  • 品牌网站建设4a小蝌蚪网页设计分类
  • 域名注册以后会给你一个账户名密码上传做好的网站文化网站建设需要的功能
  • 企业站用wordpress做好吗那些做环保网站的好
  • 天津有哪些有名的网站建设公司商城网站模板免费
  • 安徽省途顺建设工程有限公司网站制作网站公
  • 北京建设职工大学网站成都网站建设比较好的公司
  • 网站建设品牌策wordpress怎么做企业网站
  • 网站正在建设中 html 模板医院网站建设预算表
  • 哪个网站能接施工图来做购物网站黑白
  • 网站开发课设心得企业宣传页模板
  • 中学生怎么做网站ghost 卸载wordpress
  • 网站诊断报告案例用户浏览网站的方式
  • 网站开发流程抚州做网站需要看的书
  • wordpress 禁止目录浏览网站seo推广优化
  • 源代码如何做网站高校门户网站建设需要多少钱
  • 深圳微商城网站制作报价基础网页设计教程
  • wordpress+vps建站大连网站建设运营
  • 第一次开票网站建设怎么开制作网站品牌公司哪家好
  • 医疗机械网站怎么做什么是o2o电商模式
  • 北京微网站建设设计服务营销导向的企业网站建设步骤
  • 网站 301网站设计评价标准
  • 网站页面设计规范大连装修公司哪家好
  • 祁东网站建设微信公众号做的网站
  • 火山开发软件可以开发网站吗盐城代运营
  • 网页制作与网站建设从入门到精通民宿客栈网站制作
  • 如何写手机适配网站自己做的网站能上传到凡科吗