qt编程:windows下的udp通信

本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明.

环境:

主机:win7

开发环境:qt

功能:

用udp进行收发通信

界面:

源代码:

LssHost.pro:

  1. #-------------------------------------------------
  2. #
  3. # Project created by QtCreator 2013-09-22T09:36:44
  4. #
  5. #-------------------------------------------------
  6. QT       += core gui
  7. QT       += network
  8. TARGET = LssHost
  9. TEMPLATE = app
  10. SOURCES += main.cpp\
  11. mainwindow.cpp
  12. HEADERS  += mainwindow.h
  13. FORMS    += mainwindow.ui

mainwindows.h

  1. #ifndef MAINWINDOW_H
  2. #define MAINWINDOW_H
  3. #include <QMainWindow>
  4. #include <QtNetwork/QUdpSocket>
  5. namespace Ui {
  6. class MainWindow;
  7. }
  8. class MainWindow : public QMainWindow
  9. {
  10. Q_OBJECT
  11. public:
  12. explicit MainWindow(QWidget *parent = 0);
  13. ~MainWindow();
  14. private:
  15. Ui::MainWindow *ui;
  16. QUdpSocket *udp_socket_tx;
  17. QUdpSocket *udp_socket_rx;
  18. QHostAddress Ip_Tx;
  19. int Port_Tx;
  20. private slots:
  21. void on_btn_cfg_clicked();
  22. void on_btn_tx_clicked();
  23. void rx_udp();
  24. };
  25. #endif // MAINWINDOW_H

mainwindows.cpp:

  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3. MainWindow::MainWindow(QWidget *parent) :
  4. QMainWindow(parent),
  5. ui(new Ui::MainWindow)
  6. {
  7. ui->setupUi(this);
  8. udp_socket_tx = new QUdpSocket(this);
  9. udp_socket_rx = new QUdpSocket(this);
  10. ui->btn_tx->setEnabled(false);
  11. }
  12. MainWindow::~MainWindow()
  13. {
  14. delete ui;
  15. }
  16. //接收udp数据
  17. void MainWindow::rx_udp()
  18. {
  19. qDebug() << "rx";
  20. while (udp_socket_rx->hasPendingDatagrams())
  21. {
  22. QByteArray datagram;
  23. datagram.resize(udp_socket_rx->pendingDatagramSize());
  24. QHostAddress sender;
  25. quint16 senderPort;
  26. udp_socket_rx->readDatagram(datagram.data(), datagram.size(),
  27. &sender, &senderPort);
  28. ui->txt_rx->append(datagram);
  29. }
  30. }
  31. //发送按键
  32. void MainWindow::on_btn_tx_clicked()
  33. {
  34. QByteArray datagram = ui->txt_tx->toPlainText().toAscii();
  35. udp_socket_tx->writeDatagram(datagram, datagram.size(), Ip_Tx, Port_Tx);
  36. }
  37. //配置按键
  38. void MainWindow::on_btn_cfg_clicked()
  39. {
  40. bool ok;
  41. int port_rx = 0;
  42. //获得发送IP和端口
  43. Ip_Tx = QHostAddress(ui->txt_ip->text());
  44. Port_Tx = ui->txt_port_tx->text().toInt(&ok);
  45. //获得接收端口
  46. port_rx = ui->txt_port_rx->text().toInt(&ok);
  47. udp_socket_rx->bind(QHostAddress::Any, port_rx);
  48. //绑定接收信号槽
  49. connect(udp_socket_rx, SIGNAL(readyRead()),this, SLOT(rx_udp()));
  50. ui->btn_tx->setEnabled(true);
  51. }

main.cpp:

    1. #include <QtGui/QApplication>
    2. #include "mainwindow.h"
    3. int main(int argc, char *argv[])
    4. {
    5. QApplication a(argc, argv);
    6. MainWindow w;
    7. w.show();
    8. return a.exec();
    9. }

http://blog.csdn.net/jdh99/article/details/11892725

qt在windows下的udp通信(最简单)的更多相关文章

  1. QT在windows下的安装与配置

    先了解Qt: Qt一直以来,分为商业.开源两个版本,商业版本为用户提供了二级制的动态库,直接安装既可以使用,但是需要花钱购买license,而开源版本则遵守GPL协议,提供了源码,用户需要自行编译,才 ...

  2. Windows下Anaconda的安装和简单使用

    Windows下Anaconda的安装和简单使用 Anaconda is a completely free Python distribution (including for commercial ...

  3. Qt在Windows下的三种编程环境搭建

    尊重作者,支持原创,如需转载,请附上原地址:http://blog.csdn.net/libaineu2004/article/details/17363165 从QT官网可以得知其支持的平台.编译器 ...

  4. qt在windows下编译遇到的一些问题

    软件是在linux上写的,然而搬到windows上来遇到了好多问题.... 想跪.... 首先就是压根编译不了的问题....这个问题困扰我好久了....一直报错undefined reference ...

  5. Qt在Windows下的三种编程环境搭建(图文并茂,非常清楚)good

    尊重作者,支持原创,如需转载,请附上原地址:http://blog.csdn.net/libaineu2004/article/details/17363165 从QT官网可以得知其支持的平台.编译器 ...

  6. 【Qt开发】Qt在Windows下的三种编程环境搭建

    从QT官网可以得知其支持的平台.编译器和调试器的信息如图所示: http://qt-project.org/doc/qtcreator-3.0/creator-debugger-engines.htm ...

  7. 【QT开发】QT在windows下的exe应用程序如何在别人的电脑上直接运行

     当你利用QT编译了一个可执行程序,需要将这个可执行程序拷贝到别人的电脑上运行,这个时候除了这个可执行程序外,还需要支持的库才可用运行.一般来说通过下面的方法可以实现.     首先,需要看你用的是什 ...

  8. windows下curl的安装和简单使用

    curl是利用URL语法在命令行方式下工作的开源文件传输工具.它支持很多协议:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP. 一 ...

  9. java 网络编程之UDP通信和简单的群聊程序

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

随机推荐

  1. 经典图形的绘制(matlab)

    1. radial sinusoïdal signal:径向正弦信号 [xx, yy] = meshgrid(-50:50); I = sin(sqrt(xx.^2+yy.^2)); imshow(I ...

  2. 使用dom4j来处理xml的一些常用方法

    要使用dom4j读写XML文档,需要先下载dom4j包,dom4j官方网站在 http://www.dom4j.org/ 解开后有两个包,仅操作XML文档的话把dom4j-1.6.1.jar加入工程就 ...

  3. Redmine迁移至华为软件开发云-项目管理

    一.方案概述 要想将Redmine中某个项目的数据导入到华为软件开发云(以下简称开发云),如果说是按照Redmine中的数据一条一条的在开发云中新建出来,肯定不是一个明智的方案,下面就是给大家介绍一个 ...

  4. URAL 1684. Jack&#39;s Last Word KMP

    题目来源:URAL 1684. Jack's Last Word 题意:输入a b 把b分成若干段 每一段都是a的前缀 思路:b为主串 然后用a匹配b 记录到b的i位置最大匹配的长度 然后切割 切割的 ...

  5. ASP.NET Core & Docker & Jenkins 零基础持续集成实战

    原文:ASP.NET Core & Docker & Jenkins 零基础持续集成实战 一.本系列教程说明 源代码管理工具:Gogs 持续集成工具:Jenkins 容器:Docker ...

  6. Linux下编译,要下载tar.xz,而不要下载zip,因为换行的编码不一样,对.h.cpp没有影响,但是对脚本有影响 good

    原因是 在win下编辑的时候,换行结尾是\n\r , 而在linux下 是\n,所以才会有 多出来的\r但是这个我是直接下载的官网文件解压的,没有动过啊. 破案了. linux下编译要下 .tar.x ...

  7. 国家模式c++

    状态模式(State Pattern)是设计模式的一种,属于行为模式. 定义(源于Design Pattern):当一个对象的内在状态改变时同意改变其行为,这个对象看起来像是改变了其类. 状态模式主要 ...

  8. TL9000 电信业质量体系管理标准

    1.背景介绍:1987年国际标准化组织创立了ISO9000标准.标准发布后,在世界范围内得到了迅速的推广和广泛的认可,成为全世界衡量质量管理水平与质量保证能力的公共标准.九十年代,美国三大汽车公司和航 ...

  9. HTML5 随手记(4)

    新中国 chrome 不支持 -webkit-text-size-adjust 设定.可以小于 12px.为了尺寸小于 12px 和清晰的显示效果,现在无解(scale 不清楚) 版权声明:本文博客原 ...

  10. java堆 (转)

     Java栈和堆 ----这两个概念未知很长一段时间,终于找到了一个很好的文本.使用和共享 1. 堆(stack)堆(heap)他们是Java使用Ram本地存储的数据. 与C++不同,Java主动管理 ...