好友
阅读权限10
听众
最后登录1970-1-1
|
QUdpSocket
<h2>QT的UDP协议:</h2>
-
windows的UDP编程模型
服务器 |
客户端 |
0.协议版本信息 |
0.协议版本信息 |
1.创建socket |
1.创建socket |
2.服务器协议地址簇 |
2.获取服务器的协议地址簇 |
3.绑定 |
3.通信:往服务器发数据 |
4.接受客户端数据,顺百年获取客户端协议地址簇 |
|
5. 关闭 |
4. 关闭 |
<strong>recv + accpet == recvfrom</strong>
<strong>send + connect ==sendto</strong>
-
QT的UDP编程模型
服务器 |
客户端 |
1.创建socket对象 (QUdpSocket) |
1.创建socket对象(QUdpSocket) |
2.绑定(QUdpSocket::bind) |
|
3.收数据 信号发送者:QUdpSocket对象 信号接收者:当前对象 信号:QUdpSocket::readyRead |
2.通信 |
4. 发数据 收:readDatagram 发: writeDatagram |
|
5. 关闭 |
3. 关闭 |
<h2>服务器端的界面设计</h2>
<h2>客户端界面设计</h2>
<strong>可以将textEdit_recv设置为ReadOnly</strong>
QUdpSocket服务器端代码
-
在.pro文件中添加
~~~c++
QT +=network
-
创建socket对象
- 在头文件中加入
#include <QUdpSocket>
- 在类的定义的private中添加
QUdpSocket* pQUdpSocket
- 在构造器中
pQUdpSocket = new QUdpSocket(this)
-
绑定
pQUdpSocket->bind(8888) ,8888位服务器的端口号
-
数据的接收(信号)
~~~c++
connect(pQUdpSocket,&QUdpSocket::readyRead,this,[=](){
//收数据
char buff[1024]={0};
QHostAddress ip;
quint16 port;
pQUdpSocket->readDatagram(buff,1024,&ip,&port);
//数据的显示
QString str = QString("ip:%1,port:%2,msg:%3").arg(ip.toString()).arg(port).grg(buff);
ui->textEdit_recv->append();
});
槽,到ui设计界面,选中发送的PushButton,右键转到槽,选择clicked()
~~~c++
//获取ip,port,msg
QString ip = ui->lineEdit_IP->text();
QString port = ui->lineEdit_port->text();
QString msg = ui->textEdit_send->toPlainText();
pQUdpSocket->writeDatagram(msg.toUtf8(),QHostAddress(ip),port.toUInt());
QUdpSocket客户端代码
和服务端差不多,去掉绑定这一步就行了。
|
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|