UDP是无连接的不可靠的传输协议,可以用在可靠传输不是很重要的情况下使用。 QUdpSocket是QAbstractSocket 的子类,它们都继承了QIODevice。所以可以用QUdpSocket进行发送接收数据。它和QTcpSocket最大的区别也就是,发送数据之前不需要建立连接。以下简单例子,演示了用QUdpSocket如何实现客户端和服务端的通信。
服务端代码:
class UDPServer:public QObject
{
Q_OBJECT
public:
UDPServer(QObject *parent = NULL);
~UDPServer();
private slots:
void readPendingDatagrams();
private:
QUdpSocket *udpSocket;
};
UDPServer::UDPServer(QObject *parent /* = NULL */):QObject(parent)
{
udpSocket = new QUdpSocket(this);
udpSocket->bind(QHostAddress::LocalHost, 7755);
cout<<"Server is Running......"<<endl;
connect(udpSocket, SIGNAL(readyRead()),this, SLOT(readPendingDatagrams()));
}
UDPServer::~UDPServer()
{
}
void UDPServer::readPendingDatagrams()
{
QHostAddress sender;
quint16 senderPort;
while (udpSocket->hasPendingDatagrams())