客戶端代碼:
[cpp] view plain copy
1. class UdpClient : public QWidget
2. {
3. Q_OBJECT
4.
5. public:
6. UdpClient(QWidget *parent = 0, Qt::WFlags flags = 0);
7. ~UdpClient();
8.
9. private slots:
10. void sendMessageSlot();
11. void readPendingDatagrams();
12. private:
13. QUdpSocket *udpSocket;
14. QLineEdit *m_pLEdit;
15. QPushButton *m_pSendMesBtn;
16. QLabel *m_pMessage;
18. };
[cpp] view plain copy
1. UdpClient::UdpClient(QWidget *parent, Qt::WFlags flags)
2. : QWidget(parent, flags)
3. {
4. m_pLEdit = new QLineEdit(this);
5. m_pSendMesBtn = new QPushButton(tr(“Sending”),this);
6. udpSocket = new QUdpSocket(this);
7. m_pMessage = new QLabel(this);
8. QHostAddress sender = udpSocket-》localAddress();
9. quint16 senderPort = udpSocket-》localPort();
10. udpSocket-》bind(sender,senderPort);
11. m_pLEdit-》setGeometry(5,5,100,20);
12. m_pSendMesBtn-》setGeometry(110,5,50,20);
13. m_pMessage-》setGeometry(5,30,150,20);
14. m_pLEdit-》setStyleSheet(“QLineEdit{color:red}”);
15. connect(m_pSendMesBtn, SIGNAL(clicked()),this, SLOT(sendMessageSlot()));
16. connect(udpSocket, SIGNAL(readyRead()),this, SLOT(readPendingDatagrams())); 19.
20. }
21.
22. UdpClient::~UdpClient()
23. {
24.
25. }
26.
27. void UdpClient::sendMessageSlot()
28. {
29. QString text = m_pLEdit-》text();
30. QByteArray datagram = text.toLocal8Bit();
31. udpSocket-》writeDatagram(datagram.data(),datagram.size(),QHostAddress::LocalHost, 7755);
32. }
33.
34. void UdpClient::readPendingDatagrams()
35. {
36. while (udpSocket-》hasPendingDatagrams())
37. {
38. QByteArray datagram;
39. datagram.resize(udpSocket-》pendingDatagramSize());
40. QHostAddress sender;
41. quint16 senderPort;
42. udpSocket-》readDatagram(datagram.data(), datagram.size(),&sender, &senderPort);
43. QString text = QString(datagram);
44. m_pMessage-》setText(text);
45. }
46. }
說明:
1. 綁定本地地址和端口,以接收客戶端發(fā)過來的信息
[cpp] view plain copy
a. QHostAddress sender = udpSocket-》localAddress();
b. quint16 senderPort = udpSocket-》localPort();
c. udpSocket-》bind(sender,senderPort);
評(píng)論