qt基础10

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
1、创建socket
socket = new QUdpSocket(this);

2、绑定端口
socket->bind(10000);

3、处理收到数据信号
connect(socket, &QUdpSocket::readyRead,
[=](){
char buf[2048] = {0};
QHostAddress cliAddr;
quint16 port;

//udp需要使用读取数据报的函数,否则无法成功读取数据
qint64 length = socket->readDatagram(buf, sizeof(buf), &cliAddr, &port);
if(length > 0) {
QString str = QString("[%1:%2]:%3").arg(cliAddr.toString()).arg(port).arg(buf);
ui->textEdit->setText(str);
}

});

//发送数据
QString str = "hello world";
socket->writeDatagram(str.toUtf8(), QHostAddress("127.0.0.1"), 10000);

//若写数据报时地址改为255.255.255.255则为广播
QString str = "hello world";
socket->writeDatagram(str.toUtf8(), QHostAddress("255.255.255.255"), 10000);

//如果想要组播,则需要加入组播地址
//socket->joinMulticastGroup(xxx)
// socket->leaveMulticastGroup(xxx)