【Qt5开发及实例】30、实现客户端的编程,UDP协议
2015-02-27 22:01
399 查看
udpclient.h
/** * 书本:【Qt5开发及实例】 * 功能:实现客户端的编程 * 文件:udpclient.h * 时间:2015年2月5日22:10:30 * 作者:cutter_point */ #ifndef UDPCLIENT_H #define UDPCLIENT_H #include <QDialog> #include <QVBoxLayout> #include <QTextEdit> #include <QPushButton> #include <QUdpSocket> class UdpClient : public QDialog { Q_OBJECT public: UdpClient(QWidget *parent = 0, Qt::WindowFlags f = 0); ~UdpClient(); public slots: void CloseBtnClicked(); void dataReceived(); private: QTextEdit *ReceiveTextEdit; QPushButton *CloseBtn; QVBoxLayout *mainLayout; int port; //端口号 QUdpSocket *udpSocket; //套接字 }; #endif // UDPCLIENT_H
udpclient.cpp
/** * 书本:【Qt5开发及实例】 * 功能:实现客户端的编程 * 文件:udpclient.cpp * 时间:2015年2月5日22:10:30 * 作者:cutter_point */ #include "udpclient.h" #include <QMessageBox> #include <QHostAddress> UdpClient::UdpClient(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f) { setWindowTitle(tr("UDP Client")); ReceiveTextEdit = new QTextEdit(this); CloseBtn = new QPushButton(tr("Close"),this); mainLayout=new QVBoxLayout(this); mainLayout->addWidget(ReceiveTextEdit); mainLayout->addWidget(CloseBtn); //初始化界面结束 connect(CloseBtn, SIGNAL(clicked()), this, SLOT(CloseBtnClicked())); //关闭 port = 5555; //端口号 udpSocket = new QUdpSocket(this); connect(udpSocket, SIGNAL(readyRead()), this, SLOT(dataReceived())); //收集数据,电报 bool result = udpSocket->bind(port); //把udpSocket绑定到相应的端口 if(!result) //result为false的话,那么就进行下面的,也就是绑定失败 { QMessageBox::information(this, tr("error"), tr("udp socket create error!")); //udp协议套接字创建失败 return; } } //void CloseBtnClicked(); void UdpClient::CloseBtnClicked() { this->close(); //关闭窗口 } //void dataReceived(); void UdpClient::dataReceived() { while(udpSocket->hasPendingDatagrams()) //如果有数据报的话 { QByteArray datagram; //字节流 datagram.resize(udpSocket->pendingDatagramSize()); //里面那个获得第一个数据报的长度,设定字节流的长度 udpSocket->readDatagram(datagram.data(), datagram.size()); //读取相应长度的数据报到datagram QString msg = datagram.data(); //得到字节流的数据 ReceiveTextEdit->insertPlainText(msg); //显示在界面上 } } UdpClient::~UdpClient() { }
结果
然后是客户端和服务器端,自己可以改一下地址在两台机器上联网运行,或者就在一台机器上,用同样的本地地址运行:
相关文章推荐
- 【Qt5开发及实例】29、实现服务器端的编程,UDP协议
- java udp网络编程及实例代码,实现客户端和服务端通信
- Socket编程 消息传送 UDP协议(窗口实现) 客户端
- 实现UDP协议,socket编程,调用到windowsAPI,实现客户端和服务器
- HTTP协议的C语言编程实现实例
- 使用WC“.NET研究”F实现SOA面向服务编程——简单的WCF开发实例
- 在Java中实现UDP协议编程的方法
- HTTP协议的C语言编程实现实例
- HTTP协议的C语言编程实现实例
- 在Java中实现UDP协议编程(DatagramSocket/DatagramPacket)
- android 开发之socket编程 UDP和TCP通信实现
- HTTP协议的C语言编程实现实例[摘抄]
- HTTP协议的C语言编程实现实例
- HTTP协议的C语言编程实现实例
- HTTP协议的C语言编程实现实例
- 在Java中实现UDP协议编程的方法[转]
- 使用WCF实现SOA面向服务编程——简单的WCF开发实例
- UDP的客户端和服务器端的实例(VC6.0实现)
- 在Java中实现UDP协议编程的方法