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

高中生自己做网站商标免费查询官网

高中生自己做网站,商标免费查询官网,网站优化推广的方法,wordpress 手机端api1. UDP通信 1.1 udp通信的基本流程 创建套接字 绑定套接字 进行通信 关闭套接字 涉及到的类和信号 QUdpSocket#xff1a;Udp套接字类#xff0c;类对象就是一个udp套接字对象 QHostAddress#xff1a;ip地址类 void readyRead()#xff1a;信号#xff0c;当有数据到达可… 1. UDP通信 1.1 udp通信的基本流程 创建套接字 绑定套接字 进行通信 关闭套接字 涉及到的类和信号 QUdpSocketUdp套接字类类对象就是一个udp套接字对象 QHostAddressip地址类 void readyRead()信号当有数据到达可读就会产生这个信号1.2 举例 通信端1 udp1 widget.h #ifndef WIDGET_H #define WIDGET_H#include QWidget #include QUdpSocketQT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();private slots:void on_pushButton_clicked();//当有数据到达时的槽void readdate(); private:Ui::Widget *ui;//创建udp对象QUdpSocket* socket; }; #endif // WIDGET_Hwidget.cpp #include widget.h #include ui_widget.h//udp通信 Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui-setupUi(this);//1. 创建udp套接字socket new QUdpSocket;//2. 绑定//ip地址类直接构造设置ip地址QHostAddress addr(192.168.124.33);//addr.setAddress();//函数设置ip地址socket-bind(addr,10000);//绑定readyRead信号当有数据到达时就会触发信号去接收数据connect(socket,SIGNAL(readyRead()),this,SLOT(readdate()));}Widget::~Widget() {delete ui; }//发送数据 void Widget::on_pushButton_clicked() {//发送数据//定义缓冲区QByteArray data ui-textEdit_2-toPlainText().toLocal8Bit();//toLocal8Bit()将数据转换为QByteArray类型socket-writeDatagram(data,QHostAddress(192.168.124.33),10001); }//接收数据 void Widget::readdate(){//定义缓冲区QByteArray data;data.resize(1024);//读发来的数据存,储到data中QHostAddress addr;quint16 port;//size是收到的数据大小int size socket-readDatagram(data.data(),data.size(),addr,port);//参数addrrport是发送方的ip和端口data.resize(size);//展示数据ui-textEdit-append(发送端的ip:addr.toString() port:QString::number(port));ui-textEdit-append(data); } 通信端2 udp2 widget.h widget.cpp 运行 2. TCP通信 2.1 客户端通信流程 QTcpSocket 1. 创建套接字 2. 绑定套接字 3. 连接服务器 4. 进行通信 5. 关闭套接字 2.1.1 涉及的信号  connected()信号当连接服务器且连接成功 readyRead()信号当发送给数据到套接字套接字可读 disconnected()信号只要套接字断开连接就会产生 2.2 服务端通信流程 QTcpServer 1. 创建套接字 2. 绑定套接字 3. 监听套接字---套接字类型改变改为监听套接字 4. 连接客户端---得到与客户端进行通信的套接字 5. 进行通信 6. 关闭套接字 相关函数 nextPendingConnection()服务器建立与客户端连接返回值 QTcpScket 类对象通信套接字对象 2.2.1 涉及的信号 newConnection()信号当有新的客户端连接时会产生这个信号 readyRead()信号当发送给数据到套接字套接字可读 disconnected()信号只要套接字断开连接就会产生 2.2 举例模拟客户端和服务端通信 2.2.1 客户端 tcp_client widget.h #ifndef WIDGET_H #define WIDGET_H#include QWidget #include QTcpSocket #include QHostAddressQT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();private slots:void on_pushButton_connect_clicked();//当连接服务器且连接成功的槽void socket_conn();void on_pushButton_send_clicked();//当有数据发来时触发该信号void readdata();void on_pushButton_duankai_clicked();//当连接断开触发该信号void socket_disconn();private:Ui::Widget *ui;//创建tcp对象QTcpSocket* socket; }; #endif // WIDGET_H widget.cpp #include widget.h #include ui_widget.h//tcp通信客户端 Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui-setupUi(this);//1.创建套接字对象socket new QTcpSocket;//2.绑定这里其实可以不用绑定系统会自动给你分配socket-bind(QHostAddress(192.168.124.33),9999);//设置连接按钮可点击发送和点击不可点ui-pushButton_connect-setEnabled(true);ui-pushButton_send-setEnabled(false);ui-pushButton_duankai-setEnabled(false);}Widget::~Widget() {delete ui; }//连接服务器 void Widget::on_pushButton_connect_clicked() {//3. 连接服务器参数1服务端ip,参数2服务端端口socket-connectToHost(ui-lineEdit_ip-text(),ui-lineEdit_port-text().toUShort());//toUShort() 字符串转为数字//提示注意这里的信号和槽的绑定写在连接按钮里后面会有个问题就是每连接一次信号和槽都会再绑定一次造成多次重复绑定//要解决问题就需要在断开连接哪里把绑定的信号和槽断开//如果把信号和槽的绑定写在上面的构造里就不会有这个问题了//当连接服务器且连接成功就会触发该信号connect(socket,SIGNAL(connected()),this,SLOT(socket_conn()));//当有数据发来时触发该信号connect(socket,SIGNAL(readyRead()),this,SLOT(readdata()));//当连接断开触发该信号connect(socket,SIGNAL(disconnected()),this,SLOT(socket_disconn())); }//当连接服务器且连接成功触发的信号对应的槽 void Widget::socket_conn(){//接收框里提示连接成功ui-textEdit_receice-append(ui-lineEdit_ip-text():ui-lineEdit_port-text() connect ok);//设置连接按钮不可点击断开和发送可点击ui-pushButton_connect-setEnabled(false);ui-pushButton_send-setEnabled(true);ui-pushButton_duankai-setEnabled(true); }//点击发送数据给服务器 void Widget::on_pushButton_send_clicked() {//4.将数据发送给服务器//toStdString().c_str()先转为c标准字符串再转为c字符串socket-write(ui-textEdit_write-toPlainText().toStdString().c_str());}//当有数据发来时,接收数据 void Widget::readdata(){//5.读取数据QByteArray data socket-readAll();ui-textEdit_receice-append(data); }//客户端断开与服务器的连接 void Widget::on_pushButton_duankai_clicked() {//6.断开与服务端的连接socket-disconnectFromHost();}//连接断开后要做到处理 对应的槽(只要连接断开就会进入这个槽函数) void Widget::socket_disconn(){//接收框里提示连接断开ui-textEdit_receice-append(ui-lineEdit_ip-text():ui-lineEdit_port-text() disconnect);//把绑定的信号和槽断开disconnect(socket,SIGNAL(connected()),this,SLOT(socket_conn()));disconnect(socket,SIGNAL(readyRead()),this,SLOT(readdata()));disconnect(socket,SIGNAL(disconnected()),this,SLOT(socket_disconn()));//设置连接按钮可点击发送和点击不可点ui-pushButton_connect-setEnabled(true);ui-pushButton_send-setEnabled(false);ui-pushButton_duankai-setEnabled(false); } 测试使用网络调试助手E:\peixunqianrushi_ziliao\网络调试助手 连接 发送数据 点击断开连接 2.2.2 服务端 服务器设置为多线程---并发服务器每个客户端在线程中进行操作 tcp_server widget.h #ifndef WIDGET_H #define WIDGET_H#include QWidget #include QTcpServer #include QTcpSocket #include thread_tcp.hQT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();private slots:void on_pushButton_start_clicked();//当有新的客户端连接时的槽void new_conn_arrive();void on_pushButton_end_clicked();private:Ui::Widget *ui;//实例化tcp对象QTcpServer* server;//存储的socket就是与客户端的通信套接字QTcpSocket* socket1;//存储所有的通信套接字QListQTcpSocket* list;}; #endif // WIDGET_H widget.cpp #include widget.h #include ui_widget.h//tcp通信服务端 Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui-setupUi(this);//1.创建tcp服务端套接字server new QTcpServer;//2.绑定,这里提示在qt中绑定和监听写在一起了,都在listen函数中//当有新的客户端连接时就会触发该信号connect(server,SIGNAL(newConnection()),this,SLOT(new_conn_arrive()));}Widget::~Widget() {delete ui; }//启动服务器 void Widget::on_pushButton_start_clicked() {//3.监听这里提示在qt中绑定和监听写在一起了server-listen(QHostAddress(192.168.124.33),8888);ui-textEdit-append(服务器启动成功~~~);}//当有新的客户端连接请求时,触发该信号对应的槽函数 //建立连接 void Widget::new_conn_arrive(){//4.服务器建立与客户端的连接//现在的socket1就是与客户端的通信套接字socket1 server-nextPendingConnection();//提示客户端连接成功socket1-write(connect success~~~~~~~);//将通信套接字添加进链表list.append(socket1);//从这里使用线程//把与客户端通信的套接字放入线程中使用线程来操作套接字与客户端通信//创建线程有一个客户端就创建一个线程thread_tcp* tcp new thread_tcp;//把通信套接字给线程tcp-socket socket1;//当客户端发来消息就会触发 在线程中的 写的槽函数去读取客户端消息connect(tcp-socket,SIGNAL(readyRead()),tcp,SLOT(readdata()));//客户端断开连接,触发信号调用 线程中的槽使线程关闭connect(tcp-socket,SIGNAL(disconnected()),tcp,SLOT(dis_conn()));//启动线程tcp-start();}//关闭服务器 void Widget::on_pushButton_end_clicked() {for(int i0;ilist.size();i){//服务端关闭通信套接字的连接list.at(i)-disconnectFromHost();}list.clear();//关闭监听server-close();ui-textEdit-append(服务端已经关闭连接~~~~~~~); } thread_tcp.h #ifndef THREAD_TCP_H #define THREAD_TCP_H#include QThread #include QTcpSocket #include QDebugclass thread_tcp : public QThread {Q_OBJECT public:thread_tcp();//socket就是与客户端的通信套接字QTcpSocket* socket;//执行线程的runvoid run();public slots://当客户端发来消息的槽void readdata();//只要客户端断开就关闭线程void dis_conn();};#endif // THREAD_TCP_H thread_tcp.cpp #include thread_tcp.hthread_tcp::thread_tcp() {}//当客户端发来消息,读数据 void thread_tcp::readdata(){//读出数据QByteArray data socket-readAll();//给客户端返回数据socket-write(data);}//一直执行线程 void thread_tcp::run(){qDebug()线程执行;//阻塞执行exec(); }//客户端断开连接时关闭线程 void thread_tcp::dis_conn(){qDebug()线程关闭;exit(0); } 测试 运行服务端 启动客户端和网络调试助手分别充当两个客户 分别连接成功 发送数据成功 分别断开连接成功 再次分别连接测试服务端关闭功能 关闭成功
http://www.zqtcl.cn/news/90762/

相关文章:

  • 网站开发 卡片网站建设合同需要印花税
  • 手机端网站图片上传如何做新公司取名字大全免费
  • vue.js网站建设智慧团建官方网站登录入口
  • 江宁区建设局网站网站建设 美食站点
  • 哈尔滨松北区建设局网站唐山企业网站模板建站
  • 服装公司网站策划书外网设计灵感网站
  • 学做婴儿衣服网站windows 建网站
  • 银饰品网站建设规划策划书wordpress近义词搜索
  • 淘宝联盟网站推广位怎么做网站开发合同支付
  • 有没有一些有试卷做的网站ios开发教程
  • 网站备案服务类型红酒公司网站源码
  • 南宁网站优化推广方案4000套微信小游戏源码
  • 什么犁网站做淘宝门头阿里云 wordpress建站
  • 免费网站建设凡科设计师的网站有哪些
  • 微信公众号运营方法seo 排名 优化
  • 深圳做营销网站设计淘宝网官方网站免费下载
  • 菏泽住房和城乡建设厅网站企业查询官网免费查询一下
  • 青海网站建设公司电话163 com邮箱注册
  • 建设法律法规文本查询网站自由设计师是什么意思
  • 分站城市网站如何做seo上海网站建设选缘魁
  • 荆门网站建设电话如何制作网页链接二维码
  • 邳州微网站开发unsplash素材网站
  • 大型网站技术架构wordpress 换域名
  • 网站建设 首选百川互动织梦网站数据下载
  • pc端网站开发技术网站建设与维护工作内容
  • 凡科怎么建设网站可以做动画的网站
  • 企业网站整合网页界面设计案例赏析
  • 精美网站郑州企业培训
  • 网站备案是一年一次吗百度风云榜小说榜排名
  • 优化网站标题是什么意思wordpress主分类