使用UDP其实不用区分服务器端和客户端,直接用同一程序就能建立连接,下面直接贴出代码

1、头文件#ifndef SERVERWIDGET_H

#define SERVERWIDGET_H

#include

#include  //UDP套接字

namespace Ui {

class ServerWidget;

}

class ServerWidget : public QWidget

{

Q_OBJECT

public:

explicit ServerWidget(QWidget *parent = 0);

~ServerWidget();

void dealMsg(); // 处理对方发过来的数据

private slots:

void on_buttonSend_clicked();

void on_buttonClose_clicked();

private:

Ui::ServerWidget *ui;

QUdpSocket *udpSocket;

};

#endif // SERVERWIDGET_H

2、cpp文件#include "serverwidget.h"

#include "ui_serverwidget.h"

#include

ServerWidget::ServerWidget(QWidget *parent) :

QWidget(parent),

ui(new Ui::ServerWidget)

{

ui->setupUi(this);

setWindowTitle("服务器:8899");

udpSocket = NULL;

//分配空间,指定父对象

udpSocket = new QUdpSocket(this);

//绑定

udpSocket->bind(8899);

//当对方成功发送数据过来

//自动触发readyRead

connect(udpSocket, &QUdpSocket::readyRead, this, &ServerWidget::dealMsg);

}

ServerWidget::~ServerWidget()

{

delete ui;

}

//处理对方发过来的数据

void ServerWidget::dealMsg()

{

//先读取对方发送的内容

char buf[1024] = {0};

//定义一个对象获取对方信息

QHostAddress cliAddr;

quint16 port; //对方端口

qint64 len = udpSocket->readDatagram(buf,sizeof(buf), &cliAddr, &port);

if(len > 0){

//字符串格式化

QString str = QString("[%1:%2] %3").arg(cliAddr.toString()).arg(port).arg(buf);

//给编辑区设定内容

ui->textEditRead->setText(str);

}

}

//发送数据

void ServerWidget::on_buttonSend_clicked()

{

if(udpSocket == NULL){

return;

}

//先获取对方的IP和端口

QString ip = ui->lineEditIp->text();

qint16 port = ui->lineEditPort->text().toInt();

//获取编辑区内容

QString contentStr = ui->textEditRead->toPlainText();

//给指定的IP发送数据

udpSocket->writeDatagram(contentStr.toUtf8(), QHostAddress(ip), port);

}

//关闭连接

void ServerWidget::on_buttonClose_clicked()

{

if(udpSocket == NULL){

return;

}

udpSocket->disconnectFromHost();

udpSocket->close();

}

3、最终实现的效果如下图

--THE END--

linux 防火墙 qt udp,使用Qt实现简单的udp/ip通信相关推荐

  1. qt中socket通信流程图_使用QT实现简单的tcp/ip通信

    使用QT实现tcp/ip的通信非常的简单,下面我将直接贴出代码: 一.服务器端 1.头文件#ifndef SERVERWIDGET_H #define SERVERWIDGET_H #include ...

  2. Qt 使用Visa库与数字仪器仪表TCP/IP通信(SCPI指令自动化测试)

    标准数字仪器仪表可通过 GPIB, RS232, USB, LAN接口等与上位机数据通信和控制.如示波器.数字万用表.频率计.台式电源等.通过SCPI协议(字符串形式)与设备通信,串口,USB等接口可 ...

  3. udp模拟tcp java_Java简单实现UDP和TCP

    TCP实现 TCP协议需要在双方之间建立连接,通过输入输出流来进行数据的交换,建立需要通过三次握手,断开需要四次挥手,保证了数据的完整性,但传输效率也会相应的降低. 简单的TCP实现 //服务端 pu ...

  4. linux防火墙过滤规则

    一.linux防火墙基础 防火墙分为硬件防火墙和软件防火墙. 1.概述 linux 防火墙体系主要工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙. 包过滤机制:netfil ...

  5. linux下 卸载qt_Windows 下 Qt creator安装和使用

    作者 |  思凡 常用C++开发环境介绍  命令行CommandLine   (1)Linux命令行:GNU g++ + Makefile/CMake   (2)Windows命令行:MinGW 市面 ...

  6. Qt界面编程(一)—— Qt概述、Qt的安装和环境变量的配置、Qt程序简单说明

    1. Qt概述 1.1 什么是Qt Qt是一个跨平台的C++图形用户界面应用程序框架.它为应用程序开发者提供建立图形界面所需的所有功能.它是完全面向对象的,很容易扩展,并且允许真正的组件编程. 1.2 ...

  7. 在 Ubuntu Linux 上从源代码构建 Qt 6.2.2的简短教程

    Qt 6.2.0 是 Qt 6 系列的第3个版本,功能与 Qt 5 相当,因此有望成为第一个被新 Qt 项目或从 Qt 5 移植的项目广泛采用的版本.在这篇文章中我提供有关在 Ubuntu Linux ...

  8. QT 信号与槽 最简单例子

    QT  信号与槽 最简单例子 main.cpp 和 my_head.h源码: [cpp] view plaincopy #ifndef MY_HEAD_H #define MY_HEAD_H #inc ...

  9. Qt 互斥锁 QMutex 的简单应用

    Qt 互斥锁 QMutex 的简单应用 在多线程解决问题中,经常会碰到多个线程操作同一片资源,有些时候用信号量的方式去处理,但有的时候需要用到互斥锁. 互斥锁:说白了就是,资源某个时间只能被一个线程使 ...

  10. linux 64位 安装qt creator .run,Qt Creator安装

    Qt Creator安装 Linux IDE Tools Download QT 找到需要的包下载. Qt Creator PS: Qt Creator 3.4.2版本之后的版本需要注册信息. Ubu ...

最新文章

  1. iOS10 推送必看 UNNotificationContentExtension
  2. 同一批电脑cpu序列号_新电脑到手后,你会验货吗?怎么检查新电脑?
  3. 向上类型转换和拷贝构造函数
  4. POJ2084 Game of Connections(数学,dp)
  5. SQL利用Case When Then多条件判断
  6. Vim 行号的显示与隐藏
  7. 呼吁开放外网_服装数据集:呼吁采取行动
  8. 编程贺卡c语言,C++实现新年贺卡程序
  9. 第四步_安装gcc交叉编译工具
  10. 3.第一本 docker 书 --- docker 网络
  11. 【第115期】零基础学做游戏制作_搭环境Unity hub
  12. 怎么把图片的边缘弄圆_如何PS制做出边缘清晰或虚化的圆角照片
  13. html图片闪动效果,用CSS制造出光泽一闪而过的图片效果
  14. cytoscape使用方法_Cytoscape的使用方法(带图片解析)
  15. Snapper 1.3, FireFox截屏插件
  16. mysql问题系列(一)-----No space left on device
  17. Notepad++和Vivado中文乱码问题
  18. Spring Cloud---服务熔断Hystrix
  19. 大素数判定以及大整数分解
  20. 考研C语言复习02(小甲鱼版本)

热门文章

  1. MyBatis学习笔记(3)-动态SQL
  2. 算法面试题_求给定字符串的排列、组合、八皇后问题
  3. 论文笔记_S2D.63_2020-ICRA_LiStereo:从雷达和双目立体图像生成稠密深度图
  4. 算法笔记_面试_0.刷leetcode_基础知识范围
  5. 算法笔记_面试题_7.颜色分类/荷兰三色旗问题
  6. OpenCV_(Based on Sobel Filter to Detect edges) 基于Sobel算子的方向滤波器检查边缘
  7. 数值分析(8)-最佳一致逼近多项式
  8. 贝叶斯估计原理及流程
  9. 第五次作业11111
  10. salt 服务启动失败