linux 防火墙 qt udp,使用Qt实现简单的udp/ip通信
使用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通信相关推荐
- qt中socket通信流程图_使用QT实现简单的tcp/ip通信
使用QT实现tcp/ip的通信非常的简单,下面我将直接贴出代码: 一.服务器端 1.头文件#ifndef SERVERWIDGET_H #define SERVERWIDGET_H #include ...
- Qt 使用Visa库与数字仪器仪表TCP/IP通信(SCPI指令自动化测试)
标准数字仪器仪表可通过 GPIB, RS232, USB, LAN接口等与上位机数据通信和控制.如示波器.数字万用表.频率计.台式电源等.通过SCPI协议(字符串形式)与设备通信,串口,USB等接口可 ...
- udp模拟tcp java_Java简单实现UDP和TCP
TCP实现 TCP协议需要在双方之间建立连接,通过输入输出流来进行数据的交换,建立需要通过三次握手,断开需要四次挥手,保证了数据的完整性,但传输效率也会相应的降低. 简单的TCP实现 //服务端 pu ...
- linux防火墙过滤规则
一.linux防火墙基础 防火墙分为硬件防火墙和软件防火墙. 1.概述 linux 防火墙体系主要工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙. 包过滤机制:netfil ...
- linux下 卸载qt_Windows 下 Qt creator安装和使用
作者 | 思凡 常用C++开发环境介绍 命令行CommandLine (1)Linux命令行:GNU g++ + Makefile/CMake (2)Windows命令行:MinGW 市面 ...
- Qt界面编程(一)—— Qt概述、Qt的安装和环境变量的配置、Qt程序简单说明
1. Qt概述 1.1 什么是Qt Qt是一个跨平台的C++图形用户界面应用程序框架.它为应用程序开发者提供建立图形界面所需的所有功能.它是完全面向对象的,很容易扩展,并且允许真正的组件编程. 1.2 ...
- 在 Ubuntu Linux 上从源代码构建 Qt 6.2.2的简短教程
Qt 6.2.0 是 Qt 6 系列的第3个版本,功能与 Qt 5 相当,因此有望成为第一个被新 Qt 项目或从 Qt 5 移植的项目广泛采用的版本.在这篇文章中我提供有关在 Ubuntu Linux ...
- QT 信号与槽 最简单例子
QT 信号与槽 最简单例子 main.cpp 和 my_head.h源码: [cpp] view plaincopy #ifndef MY_HEAD_H #define MY_HEAD_H #inc ...
- Qt 互斥锁 QMutex 的简单应用
Qt 互斥锁 QMutex 的简单应用 在多线程解决问题中,经常会碰到多个线程操作同一片资源,有些时候用信号量的方式去处理,但有的时候需要用到互斥锁. 互斥锁:说白了就是,资源某个时间只能被一个线程使 ...
- linux 64位 安装qt creator .run,Qt Creator安装
Qt Creator安装 Linux IDE Tools Download QT 找到需要的包下载. Qt Creator PS: Qt Creator 3.4.2版本之后的版本需要注册信息. Ubu ...
最新文章
- iOS10 推送必看 UNNotificationContentExtension
- 同一批电脑cpu序列号_新电脑到手后,你会验货吗?怎么检查新电脑?
- 向上类型转换和拷贝构造函数
- POJ2084 Game of Connections(数学,dp)
- SQL利用Case When Then多条件判断
- Vim 行号的显示与隐藏
- 呼吁开放外网_服装数据集:呼吁采取行动
- 编程贺卡c语言,C++实现新年贺卡程序
- 第四步_安装gcc交叉编译工具
- 3.第一本 docker 书 --- docker 网络
- 【第115期】零基础学做游戏制作_搭环境Unity hub
- 怎么把图片的边缘弄圆_如何PS制做出边缘清晰或虚化的圆角照片
- html图片闪动效果,用CSS制造出光泽一闪而过的图片效果
- cytoscape使用方法_Cytoscape的使用方法(带图片解析)
- Snapper 1.3, FireFox截屏插件
- mysql问题系列(一)-----No space left on device
- Notepad++和Vivado中文乱码问题
- Spring Cloud---服务熔断Hystrix
- 大素数判定以及大整数分解
- 考研C语言复习02(小甲鱼版本)
热门文章
- MyBatis学习笔记(3)-动态SQL
- 算法面试题_求给定字符串的排列、组合、八皇后问题
- 论文笔记_S2D.63_2020-ICRA_LiStereo:从雷达和双目立体图像生成稠密深度图
- 算法笔记_面试_0.刷leetcode_基础知识范围
- 算法笔记_面试题_7.颜色分类/荷兰三色旗问题
- OpenCV_(Based on Sobel Filter to Detect edges) 基于Sobel算子的方向滤波器检查边缘
- 数值分析(8)-最佳一致逼近多项式
- 贝叶斯估计原理及流程
- 第五次作业11111
- salt 服务启动失败