最近要用到qt的socket部分,網上關於這部分的資料都比較複雜,我在這總結一下,把socket的主要部分提取出來,實現tcp和udp的簡單通訊。
udp沒有特定的server端和client端,簡單來說就是向特定的ip傳送報文,因此我把它分為傳送端和接收端。
注意:在.pro檔案中要新增qt += network,否則無法使用qt的網路功能。
#include qudpsocket *sender;
sender = new qudpsocket(this);
qbytearray datagram = 「hello world!」;
//udp廣播
sender->writedatagram(datagram.data(),datagram.size(),qhostaddress::broadcast,6665);
//向特定ip傳送
qhostaddress serveraddress = qhostaddress("10.21.11.66");
sender->writedatagram(datagram.data(), datagram.size(),serveraddress, 6665);
/* writedatagram函式原型,傳送成功返回位元組數,否則-1
qint64 writedatagram(const char *data,qint64 size,const qhostaddress &address,quint16 port)
qint64 writedatagram(const qbytearray &datagram,const qhostaddress &host,quint16 port)
*/
#include qudpsocket *receiver;
//訊號槽
private slots:
void readpendingdatagrams();
receiver = new qudpsocket(this);
receiver->bind(qhostaddress::localhost, 6665);
connect(receiver, signal(readyread()),this, slot(readpendingdatagrams()));
void readpendingdatagrams()
}
tcp的話要複雜點,必須先建立連線才能傳輸資料,分為server端和client端。
#include qtcpsocket *client;
char *data="hello qt!";
client = new qtcpsocket(this);
client->connecttohost(qhostaddress("10.21.11.66"), 6665);
client->write(data);
#include qtcpserver *server;
qtcpsocket *clientconnection;
server = new qtcpserver();
server->listen(qhostaddress::any, 6665);
connect(server, signal(newconnection()), this, slot(acceptconnection()));
void acceptconnection()
void readclient()
QT Socket程式設計 UDP Server
1 在 pro檔案中新增 qt network 2 在 中新增 include qudpsocket m pudpsocket udp socket m pudpsocket new qudpsocket this m pudpsocket bind qhostaddress any,port co...
QT Socket程式設計 TCP Server
1 在 pro檔案中新增 qt network 2 在 中新增 qtcpserver m ptcpserver server tcp socket qtcpsocket m pconnectsocket client connect socket 初始化socket m ptcpserver new...
簡單Socket通訊
示例程式是同步套接字程式,功能很簡單,只是客戶端發給伺服器一條資訊,伺服器向客戶端返回一條資訊 這裡只是乙個簡單的示例,是乙個最基本的socket程式設計流程,在接下來的文章中,會依次記錄套接字的同步和非同步,以及它們的區別。下面是示例程式的簡單步驟說明 伺服器端 第一步 用指定的埠號和伺服器的ip...