信誉约炮

你的位置:信誉约炮 > 亚洲中文娱乐网 >

日本鬼父第二季 迅为4412竖立板Qt集结编程-UDP达成劳动器和客户端

发布日期:2025-04-12 18:22    点击次数:70

日本鬼父第二季 迅为4412竖立板Qt集结编程-UDP达成劳动器和客户端

UDP 条约是洞开式日本鬼父第二季,无连结,不行靠的传输层通讯条约,但它收发数据的速率相干于 TCP 快许多,常用在传输音视频等数据量特地大的地方。udp 集结编程只需要使用一个类 QUdpSocket。

本试验中对 QUdpSocket 的基本使用:1.创建 QUdpSocket 对象。2.绑定端标语3.数据到来触发 readyRead()信号。4.读取发送数据。5.关闭。具体才调:才调一:拼装 ui 界面,和 TCP 章节搭建 UI 界面要领一致。

才调二:编写代码1.创建 QUdpSocket 对象,使用 bind 函数绑定端标语和套接字,数据报到来后会发出信 号(),在绑定的槽函数内去读取数据。2.读取数据,数据到来 hasPendingDatagrams()复返 true,再用 pendingDatagramSize()取得数据报的长度,若是数据莫得被读取完,hasPendingDatagrams()就会复返 true,直至数据皆被读取完。readDatagram(data,size);参数 data 为读取的数据,size 为数据长度。3.发送数据,使用 writeDatagram 函数,writeDatagram(const char *data, qint64 len, const QHostAddress &host, quint16 port);Data:发送的数据。Len:发送的数据长度。Host:办法 IP 地址。Port:办法端标语。4.关闭 socket 套接字。代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

udp.h

#include

#include

namespace Ui {

class Udp;

}

class Udp : public QMainWindow

{

Q_OBJECT

public:

explicit Udp(QWidget *parent = 0); ~Udp();

QUdpSocket * udpSocket;

private slots:

void on_pushButton_clicked();

void readyRead_Slot(void);

void on_pushButton_3_clicked();

void on_pushButton_2_clicked();

private:

Ui::Udp *ui;

};

udp.cpp:

Udp::Udp(QWidget *parent) :

QMainWindow(parent), ui(new Ui::Udp)

{

ui->setupUi(this);

udpSocket = new QUdpSocket(this);

}

Udp::~Udp()

{

delete ui;

}

/*

* 掀开按钮

*/

void Udp::on_pushButton_clicked()

{

//绑定本端口的端标语

if(udpSocket->bind(ui->cliEdit->text().toUInt()) == true){

QMessageBox::information(this,'指示','顺利');

}else{

QMessageBox::information(this,'指示','失败');

}

//绑定数据信号和槽函数

connect(udpSocket,SIGNAL(readyRead()),this,SLOT(readyRead_Slot()));

}

/*

*读取数据槽函数

*/

void Udp::readyRead_Slot()

{

QString buf;

QByteArray array;

//hasPendingDatagrams()复返 true 时暗示至少有一个数据报在恭候被读取

while(udpSocket->hasPendingDatagrams()){

//取得数据

array.resize(udpSocket->pendingDatagramSize());

udpSocket->readDatagram(array.data(),array.size());

buf = array.data();

ui->recvEdit->appendPlainText(buf);

}

}

/*

* 发送数据

*/

void Udp::on_pushButton_3_clicked()

{

quint16 port;

QString sendBuff;

QHostAddress address;

address.setAddress(ui->ipEdit->text());//办法机地址

port = ui->portEdit->text().toInt();//办法机端标语

sendBuff = ui->sendEdit->text();//发送的数据

//发送

udpSocket->writeDatagram(sendBuff.toLocal8Bit().data(),sendBuff.length(),address,port);

}

/*

*关闭

*/

void Udp::on_pushButton_2_clicked()

{

udpSocket->close();

}

日本鬼父第二季





Powered by 信誉约炮 @2013-2022 RSS地图 HTML地图

Copyright Powered by站群 © 2013-2024