qt提供了socket的支援,它採用api形式的封裝,使得程式設計師不需要接觸底層的**就可以對socket進行操作。
1.udp的實現
udp不是連線協議,沒有客戶端與服務端的概念。
1)建立套接字相關物件
1 qsocketdevice *mureceivesocket;//套接字物件
23 qsocketnotifier *msocketnotifier;//
套接字監聽物件
2)初始化套接字相關物件
1 mureceivesocket = newqsocketdevice(qsocketdevice::datagram);23
//udp初始化45
qhostaddress myaddress;67
qstring fakeaddress;
89 fakeaddress =get_eth1_ip();
1011
//取得介面ip
1213
myaddress。setaddress(fakeaddress);
1415 mureceivesocket->bind(myaddress,port);
1617
//繫結到指定網路介面位址(ip),指定邏輯埠
1819 msocketnotifier = new qsocketnotifier(mureceivesocket->socket(),qsocketnotifier::read,0,"
msocketnotifier");
2021
//監聽mureceivesocket套接字
2223
3)定義實現響應slot
1virtual
void
onmreceive();23
void
client::onmreceive()45
2425
4)關聯套接字的signal和接收slot。
1 connect(msocketnotifier,signal(activated(int)),this,slot(onmreceive()));23
//當msocketnotifier檢測到mureceivesocket活躍時呼叫onmreceive
45
5)傳送字串
1char information[20];2
3 strcpy(information,"
abc");4
5 mureceivesocket->writeblock(information,length,myaddress,2201);
2.tcp的實現
tcp的實現與udp的實現大同小異,它是面向連線的協議。
1)服務端
1>套接字物件的定義
1 qssocket *serversocket;23 qsocketdevice *clientsocket;
45 qsocketnotifier *clientnotifier;
67 qsocketnotifier *servernotifier;
2>套接字的初始化
1qhostaddress myaddress;23
qstring fakeaddress;
45 fakeaddress = "
127.0.0.1";
67myaddress。setaddress(fakeaddress);
89 uint port = 1234;10
11 serversocket = new qssocket(myaddress,port,this,0
);12
13//
指定監聽位址及埠
1415 clientsocket = new
qsocketdevice(qsocketdevice::stream);
1617 clientnotifier = new qsocketnotifier(clientsocket->socket(),qsocketnotifier::read,0,"
clientsocket
");
3>響應連線
1只需要在qssocket的建構函式裡新增如下**。
23 server socket->new connection(clientsocket->socket());
45 當受到客戶端的連線後,clientsocket會自動響應,並接收連線。
4>接收資訊slot與udp是一樣的
2)客戶端的實現
1 客戶端的實現與udp實現不同之處是客戶端套接字不需要bind埠,因為連線上伺服器端後tcp會保持這個連線,直到通訊結束。
獲取途徑書籍
Qt 網路程式設計
目錄 承載管理 bearer management 控制系統連線狀態的api 程序間通訊 inter process communication in qt qt程式的程序間通訊 網路程式設計 network programming 介紹qt上的網路程式設計 加密套接字協議層 ssl secure ...
學習Qt網路程式設計
qtcpsocket 詳細描述 qtcpsocket 類提供乙個tcp套接字 tcp是乙個面向連線,可靠的的通訊協議,非常適合於連續不斷的資料傳遞 qtcpsocket 是qabstractsocket類非常方便的乙個子類,讓你建立乙個tcp連線和資料流交流。注意 tcp套接字不能以qiodevic...
QT學習筆記之QT網路程式設計
tcp 傳輸控制協議,提供的是面向連線 可靠的位元組流服務。當客戶和伺服器彼此交換資料前,必須先在雙方之間建立乙個tcp連線,之後才能傳輸資料。tcp提供超時重發,丟棄重複資料,檢驗資料,流量控制等功能,保證資料能從一端傳到另一端。udp 使用者資料報協議,是乙個簡單的面向資料報的運輸層協議。udp...