伺服器端:
伺服器端有兩個套接字—qtcpserver(監聽套接字)、qtcpsocket(通訊套接字) 。為實現qt環境下的網路程式設計首先應在「pro」工程檔案中新增qt += network ,如下圖所示:
接著便可以著手編寫服務端程式,首先在標頭檔案中宣告兩個套接字,在伺服器主函式中,使用監聽套接字呼叫listen()函式。
/*動態分配通訊套接字**/
tcpsocket = null ;
/*動態分配監聽套接字**/
tcpserver = new qtcpserver(this) ;
/*監聽**/
tcpserver->listen(qhostaddress::any,8888) ;//第乙個引數為系統預設,第二個引數為埠號
/*設定視窗名稱**/
this->setwindowtitle("伺服器:8888");
實現以上步驟之後伺服器便會等待連線,當連線成功之後,對方的通訊套接字會傳送newconnection() 訊號,當接到該訊號之後伺服器便建立通訊套接字和對方的通訊套接字進行通訊。在通訊過程中若對方成功傳送資訊,伺服器會收到readyread()訊號,之後在相應的槽函式中實現傳輸資料的顯示。具體**如下所示:
/*取出套接字**/
connect(tcpserver,&qtcpserver::newconnection,
[=]());}
) ;以上步驟已經實現了通訊連線和接受資料部分,因此接下來要實現傳送資料部分,首先在ui介面中畫乙個按鈕命名為send 之後轉到相應的槽函式編寫一下**:
void serverwidget::on_buttonsend_clicked()
最後實現伺服器端的斷開連線,建立close按鈕,跳轉槽函式。**如下:
void serverwidget::on_pushbutton_2_clicked()
伺服器的ui布局如下圖所示:
客戶端:
客戶端只涉及qtcpsocket(通訊套接字),首先實現客戶端與伺服器連線,建立乙個connect按鈕跳轉槽,**編寫如下:
void client::on_buttonconnect_clicked()
連線成功之後客戶端的通訊套接字會接受connected()訊號以此來編寫槽函式來提示使用者連線成功:
connect(tcpsocket,&qtcpsocket::connected,
[=]()
);
同樣當連線成功之後,伺服器像客戶端傳送資料會觸發readyread()訊號,接受到該訊號之後在相應的槽函式中實現資料顯示:
connect(tcpsocket,&qtcpsocket::readyread,
[=]()
) ;
最後實現伺服器斷開連線,建立close按鈕,跳轉槽函式:
void client::on_buttonclose_clicked()
客戶端的ui介面如下所示:
QTcp相關的類解析
2 qtcpsocket class 3 qudpsocket class qtcpserver類提供了及基於tcp的服務 需要在qmake中 network 繼承於qobject 其派生類為qsctpserver qtcpserver類提供了基於tcp的服務 此類允許接收tcp的連線,你可以指定p...
程式設計,還是程式設計
喜歡程式設計,雖然水平一般,但還是執著地學習與程式設計有關的知識。中間因為工作關係與程式設計遠離了一段時間,現在又重拾起來,細想起來還是因為喜歡吧。喜歡程式軟體的思想和原理,喜歡程式 的魅力和成就感。程式設計軟體的思想是最值得學習的,一直認為思想決定行動,思想改變世界。每種軟體的流行和受人追捧,無不...
少兒程式設計程式設計
機械人比賽,聽上去讓人有一種高大上的科技感,沒錯,在大多數人眼裡,玩機械人那是科學家做的事情,不過隨著機械人教育的普及,越來越多的孩子也能夠駕馭這高大上的機械人。格物斯坦小坦克告訴你原因,這是歸結於孩子對於程式設計課程的學習,學會對機械人進行程式設計了,自然就能玩轉機械人啦。參加機械人比賽的意義遠遠...