相关文章推荐
苦恼的跑步机  ·  全年进出口总值超8000亿元,增速全国第四— ...·  4 月前    · 
飘逸的酱牛肉  ·  上海交通大学头脑奥林匹克(OM)校内挑战赛报 ...·  10 月前    · 
豪情万千的花生  ·  【知名教授】刘如意·  10 月前    · 
飞翔的遥控器  ·  Fox Valley Technical ...·  11 月前    · 
威武的海龟  ·  明治东京恋伽_ 番剧_ bilibili ...·  11 月前    · 
小百科  ›  Socket通信(二)、基于Qt的UDP传输设计开发者社区
通信 socket udp
千杯不醉的松鼠
1 年前
根究FPGA

Socket通信(二)、基于Qt的UDP传输设计

前往小程序,Get 更优 阅读体验!
立即前往
腾讯云
开发者社区
文档 建议反馈 控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
根究FPGA
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
社区首页 > 专栏 > Socket通信(二)、基于Qt的UDP传输设计

Socket通信(二)、基于Qt的UDP传输设计

作者头像
根究FPGA
发布 于 2020-06-30 11:06:38
1.7K 0
发布 于 2020-06-30 11:06:38
举报
文章被收录于专栏: 根究FPGA

8.2 UDP通信过程

首先,UDP通信是无连接的,虽然不可靠但是传输效率高,UDP就像是写信,知道地址即可,TCP就像是打电话,确保目标正确。

在UDP服务器端,通信套接字直接绑定,如果对方发数据,套接字自动触发readyRead(),发是通过槽函数实现。

在UDP客户端,通信套接字直接绑定,如果对方发数据,套接字自动触发readyRead(),发是通过槽函数实现。

实际上,UDP并不着重区分客户端与服务器端,两者都是只需要一个通信套接字,并不需要监听,当通信套接字的readyRead信号有效之后自动读取。

读取:

首先是获取发送方的IP地址,通过通信套接字中的readDatagram()函数来实现,传入的参数:

qint64 QUdpSocket:: readDatagram ( char * data , qint64 maxSize , QHostAddress * address = Q_NULLPTR, quint16 * port = Q_NULLPTR)

Receives a datagram no larger than maxSize bytes and stores it in data .The sender's host address and port is stored in * address and * port (unless the pointers are 0).

Returns the size of the datagram on success; otherwise returns -1.

根据函数介绍可知,函数的第一个传入参数为用于存储接收数据的变量地址,形参为char *表明传入参数应为一个地址。

第二个参数为接收缓冲区的大小,

第三个参数为主机IP,格式为QhostAddress*,所以应该传入一个该类型的变量地址。

第一个参数为端口号,格式为uint16,同样传入一个该类型的变量地址,

处理函数:

代码语言: javascript
复制
voidWidget::dealMsg()
 //读取对方发送的内容
 charbuf[1024]={0};
 QHostAddresscliAddr; //对方地址
 quint16port; //对方端口
 qint64len=udpSocket->readDatagram(buf,sizeof(buf),&cliAddr,&port);
 if(len>0) //>0表示读取到东西
 //格式化,字符串组包
 QStringstr=QString("[%1:%2]%3").arg(cliAddr.toString()).arg(port).arg(buf);
 //给编辑区设置内容
 ui->textEdit->setText(str);
}

发送:

当按键按下后,首先获取ip和port,

代码语言: javascript
复制
//发送数据
voidWidget::on_buttonSend_clicked()
 //发送时先获取对方的IP和端口
 QStringip=ui->lineEditIP->text();
 
推荐文章
苦恼的跑步机  ·  全年进出口总值超8000亿元,增速全国第四——重庆外贸增长的“三重 ...
4 月前
飘逸的酱牛肉  ·  上海交通大学头脑奥林匹克(OM)校内挑战赛报名通知-上海交通大学 ...
10 月前
豪情万千的花生  ·  【知名教授】刘如意
10 月前
飞翔的遥控器  ·  Fox Valley Technical College®
11 月前
威武的海龟  ·  明治东京恋伽_ 番剧_ bilibili _ 哔哩哔哩弹幕视频网
11 月前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
小百科 - 百科知识指南
© 2024 ~ 沪ICP备11025650号