1. QTUdpSocket接收消息使用原则
  2. 第一步:new一个UdpSocket
  3. 第二步:调用UdpSocketbind方法,同时指定端口号
  4. 第三步:使用connect将接收消息函数和UdpSocket对象做关联
  5. 第四步:在接受消息槽函数当中调用readDatagram接收消息
  1. 接收消息
  1. #ifndef WIDGET_H
  2. #define WIDGET_H
  3.  
  4. #include <QWidget>
  5. #include <QUdpSocket>
  6.  
  7. class Widget : public QWidget
  8. {
  9. Q_OBJECT
  10.  
  11. public:
  12. Widget(QWidget *parent = );
  13. ~Widget();
  14. void mydatasend();
  15. private:
  16. QUdpSocket *udpsocket;
  17. private slots:
  18. void mydatarecv();
  19. };
  20.  
  21. #endif // WIDGET_H
  1. #include "widget.h"
  2. #include <QHostAddress>
  3. #include <QMessageBox>
  4.  
  5. Widget::Widget(QWidget *parent)
  6. : QWidget(parent)
  7. {
  8. udpsocket=new QUdpSocket(this);
  9. /*指定绑定端口号,接收消息必须绑定端口号,发送消息则不需要绑定*/
  10. udpsocket->bind();
      /*取消绑定端口号使用:udpsocket->close()方法*/
  11. /*readyRead()表示有消息到来这个信号*/
  12. connect(udpsocket,SIGNAL(readyRead()),this,SLOT(mydatarecv()));
  13. }
  14.  
  15. void Widget::mydatarecv()
  16. {
  17. char buf[]={};
  18. /*判断是否有消息*/
  19. while(udpsocket->hasPendingDatagrams())
  20. {
  21. udpsocket->readDatagram(buf,sizeof(buf));
  22. QMessageBox::information(this,"消息",buf);
  23. memset(buf,,sizeof(buf));
  24. }
  25. }
  26.  
  27. void Widget::mydatasend()
  28. {
  29. //
  30. }
  31.  
  32. Widget::~Widget()
  33. {
  34.  
  35. }
  1. 发送消息
  1. #ifndef WIDGET_H
  2. #define WIDGET_H
  3.  
  4. #include <QWidget>
  5. #include <QUdpSocket>
  6. #include <QPushButton>
  7. #include <QLineEdit>
  8. #include <QLabel>
  9.  
  10. class Widget : public QWidget
  11. {
  12. Q_OBJECT
  13.  
  14. public:
  15. Widget(QWidget *parent = );
  16. ~Widget();
  17. private:
  18. QUdpSocket *udpsocket;
  19. QPushButton *btn1;
  20. QLineEdit *edit1;
  21. QLineEdit *edit2;
  22. QLabel *label1;
  23. void mysenddata();
  24. private slots:
  25. void btn_click();
  26. };
  27.  
  28. #endif // WIDGET_H
  1. #include "widget.h"
  2. #include <QHostAddress>
  3. #include <QGridLayout>
  4. #include <QMessageBox>
  5.  
  6. Widget::Widget(QWidget *parent)
  7. : QWidget(parent)
  8. {
  9. udpsocket=new QUdpSocket(this);
  10. btn1=new QPushButton(tr("点击"));
  11. edit1=new QLineEdit();
  12. edit2=new QLineEdit();
  13. label1=new QLabel(tr("目标IP"));
  14. QGridLayout *lay1=new QGridLayout(this);
  15. lay1->addWidget(btn1,,);
  16. lay1->addWidget(edit1,,);
  17. lay1->addWidget(edit2,,);
  18. lay1->addWidget(label1,,);
  19. connect(btn1,SIGNAL(clicked()),this,SLOT(btn_click()));
  20. }
  21.  
  22. Widget::~Widget()
  23. {
  24.  
  25. }
  26.  
  27. void Widget::btn_click()
  28. {
  29. mysenddata();
  30. }
  31.  
  32. void Widget::mysenddata()
  33. {
  34. QString stext=edit1->text();
  35. QHostAddress *serverip=new QHostAddress();
  36. //获取目标IP地址
  37. QString ipstr=edit2->text();
  38. if(ipstr.isEmpty())
  39. {
  40. QMessageBox::critical(this,"错误信息","ip地址不可以为空!");
  41. return;
  42. }
  43. serverip->setAddress(ipstr);
  44. char buf[]={};
  45. strncpy(buf,stext.toStdString().data(),sizeof(buf));
  46. udpsocket->writeDatagram(buf,strlen(buf),*serverip,);
  47. delete serverip;
  48. edit1->clear();
  49. }

QT 网络编程二(UDP版本)的更多相关文章

  1. Qt网络编程QTcpServer和QTcpSocket的理解

    前一段时间通过调试Qt源码,大致了解了Qt的事件机制.信号槽机制.毕竟能力和时间有限.有些地方理解的并不是很清楚. 开发环境:Linux((fedora 17),Qt版本(qt-everywhere- ...

  2. Linux网络编程(二)

    Linux网络编程(二) 使用多进程实现服务器并发访问. 采用多进程的方式实现服务器的并发访问的经典范例. 程序实现功能: 1.客户端从标准输入读入一行文字,发送到服务器. 2.服务器接收到客户端发来 ...

  3. 网络编程 单纯UDP通信

    网络编程 单纯UDP通信 1,UDP发送端 2,UDP接收端 UDP发送端: #include <stdio.h> #include <unistd.h> #include & ...

  4. java:网络编程(UDP (DatagramSocket和DatagramPacket)正则表达式)

    java:网络编程(UDP (DatagramSocket和DatagramPacket)正则表达式) * TCP* 特点:面向连接,点对点的通信,效率较低,但安全可靠* UDP:用户数据报协议,类似 ...

  5. iOS 网络编程 TCP/UDP HTTP

    一.HTTP协议的主要特点: 1. CS模式 2. 简单快速:只需要传送请求方法和路径.(常用方法有GET,HEAD,POST) 3. 灵活:任意对象都可以,类型由Content-Type加以标记 4 ...

  6. C#网络编程二:Socket编程

    一:什么是SOCKET socket的英文原义是"孔"或"插座".作为进程通信机制,取后一种意思.通常也称作"套接字",用于描述IP地址和端 ...

  7. Linux 网络编程二(Socket创建)

    TCP通信 一个程序使用套接字需要执行4个步骤. --分配套接口和初始化 --连接 --发送或接收数据 --关闭套接字 涉及到的调用包括socket.bind.listen.connect(阻塞线程) ...

  8. TCP/IP协议网络编程以及UDP和TCP之传输协议

    1.什么是TCP/IP协议? 网络编程协议有很多,目前应用最广泛的是TCP/IP协议(Transmission Control Protocal/Internet Protoal 传输控制协议/英特网 ...

  9. Java网络编程二:Socket详解

    Socket又称套接字,是连接运行在网络上两个程序间的双向通讯的端点. 一.使用Socket进行网络通信的过程 服务端:服务器程序将一个套接字绑定到一个特定的端口,并通过此套接字等待和监听客户端的连接 ...

随机推荐

  1. 在FlashDevelop里使用1.8版本的的TortoiseSVN

    前几天更新TortoiseSVN到1.8版本后发现FD(FlashDevelop)里不能使用svn了,在项目面板里的所有文件及文件夹都不能正确显示svn状态了,清一色都显示为未添加版本控制的状态图标, ...

  2. JAVA中的注解小结

    以下内容参考java编程思想-4,jdk版本为jdk5.0,有点老-_-||| 什么是注解 JAVA SE5引入,也称元数据,可以直接添加到代码中,用来完整描述程序所需的信息,而这些信息是无法用Jav ...

  3. Linux 执行partprobe命令时遇到Unable to open /dev/sr0 read-write (Read-only file system)

    在使用fdisk创建分区时,我们会使用partprobe命令可以使kernel重新读取分区信息,从而避免重启系统,但是有时候会遇到下面错误信息"Warning: Unable to open ...

  4. mysqldump 逻辑备份的正确姿势

    在上一篇文章 MySQL 命令行工具之 mysqldump 深入研究 中,我们搞定了mysqldump的参数和基本原理.那么我们该怎么样最好的使用它的?它有哪些坑呢? 1. 利用mysqldump进行 ...

  5. Hello, AnnsShadow!

    Hello! 发现这个神奇的园子快一年了,自己的学习历程磕磕碰碰也过了一年了,想想,这么久了,是时候做些记录做个分享者了. 从一开始的只敢看Blog,到现在自己发表一下自己的所感所想,算是一种成长了吧 ...

  6. 省级联动(使用ajax实现)

    在博客园学习了很多实用的东西,现在该慢慢开始自己写写博客文章, 由于本人水平有限,刚走出校园的小菜鸟,另外,文章在表述和代码方面如有不妥之处,欢迎批评指正.留下你 的脚印,欢迎评论! 有什么问题,可以 ...

  7. RAID详解[RAID0/RAID1/RAID10/RAID5]

    一.RAID定义RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘 ...

  8. C++ 笔记(一) —— 尽量以 const、enum、inline 替换 #define

    ilocker:关注 Android 安全(新手) QQ: 2597294287 #define ASPECT_RATIO 1.653 记号 ASPECT_RATIO 不会进入 symbol tabl ...

  9. PHP Redis

    <?php if (!defined('BASEPATH')) exit('No direct script access allowed'); class Myredis { //redis所 ...

  10. 还是不想改报告,伊阿忆啊哟-Linux基础继续

    hi 虽然今天是最最美好的周六(前不着工作日后不着工作日),但老子还要来改报告,但额就是不想改,你拿我有啥办法啊... 争取完结Linux基础 一.Linux常用命令(三) 4.帮助命令 4.1 帮助 ...