學而不思則罔,思而不學則殆。學習和思考是相輔相成的,通過這幾天對網路程式設計的學習,收穫頗豐。接下來我將利用qt
做的乙個以
tcpip
首先談談我個人對tcp
協議的理解:
tcp就是網上購物,買家和買家之間的物品傳遞,快遞公司的扮演。快遞公司將賣家所要寄出的物品進行包裝,給予獨特的號碼,並從賣家獲取目的地位址,得知這些明確資訊後準確將物品送到買家,買家簽收後,賣家通過快遞單號查詢到買家簽收的訊息。
其次是這個簡單區域網聊天伺服器的建立思路。如下圖是思路的框圖:
乙個伺服器的建立,必須要有對外雙向通訊的介面就是套接字(socket
),所以需要建乙個
mysocket
的類,這樣才可以將不同客戶端的訊息發給其他客戶端。之後還需要再建立乙個
myserver
的類,將每個客戶端傳送的訊息通過
mysocket
傳送訊號被接受。然後在每個客戶端對應的每個
myserver
中將各自傳送的訊號傳送給其他客戶端,並再傳送給
server在ui
介面上顯示。如圖:在
mysocket
和myserver
以及myserver
和server
之間的聯絡都是通過傳送訊號,並利用槽函式進行處理,所以這整個程式的關鍵是合理運用訊號和槽函式,將資訊順利傳達。
然後是程式的展示和一些關鍵點的處理方式。
//********************====mysocket.c*************************====//
mytcpsocket::mytcpsocket(qobject *parent) :/*在建構函式中進行訊號和槽函式的連線
*/qtcpsocket(parent)
void mytcpsocket::slotreadyread()
void mytcpsocket::slotdisconnect()
//********************====myserver.c*************************====//
mytcpserver::mytcpserver(qobject *parent) : /*在建構函式中監聽
*/ qtcpserver(parent)
void mytcpserver::incomingconnection(qintptr socketdescriptor)
void mytcpserver::slotdisconnect(qintptr sockfd)/*斷開槽函式處理主要是將斷開的客戶端從容器中移除*/
} }
void mytcpserver::slotupdatemsg(qstring msg,qintptr sockfd,qstring ip)
void mytcpserver::slotrecivermsg(qstring msg,qintptr sockfd,qstring ip)
} }
//********************====server.c*************************====//
tcpserver::tcpserver(qwidget *parent) : /*在建構函式中進行訊號和槽函式的連線
*/qwidget(parent),
ui(new ui::tcpserver)
tcpserver::~tcpserver() /*析構函式中釋放
ui*/
void tcpserver::recivermsg(qstring msg,qstring ip)
最後感謝彙文,在彙文培訓學習也有三個多月了,在這個融洽的大家庭中,感覺每天都很充實,在學習中實踐,在實踐中收穫,願自己在將來能找到乙份合適的工作。
網路程式設計學習心得
unix struct in addr 32為的位址結構,是網路位元組序 struct sockaddr in s un b struct s un w u long s addr s un in addr,pin addr,far lpin addr union的作用是將大括號裡所有的東西的記憶體...
QT學習筆記之QT網路程式設計
tcp 傳輸控制協議,提供的是面向連線 可靠的位元組流服務。當客戶和伺服器彼此交換資料前,必須先在雙方之間建立乙個tcp連線,之後才能傳輸資料。tcp提供超時重發,丟棄重複資料,檢驗資料,流量控制等功能,保證資料能從一端傳到另一端。udp 使用者資料報協議,是乙個簡單的面向資料報的運輸層協議。udp...
Python高階語法 網路程式設計 學習心得筆記
每一層都有相應的協議負責交換資訊或者協同工作 tcp ip 協議 埠 tcp udp協議 tcp socket程式設計 import socket 模擬伺服器的函式 建立乙個伺服器端 def serverfunc 1.建立socket socket.af inet 使用ipv4協議 socket.s...