相信都有使用過聊天工具聊過天,不管使用QQ還是微信,首先得註冊一個帳號,聊天前,你得加對方為好友,之後才可以聊天。
前面也寫過一片使用socket通信的文章,在裡面講到,兩臺機器要聊天,首先其中一方得知道知道另一方的地址和埠號,然後連接上才可以進行通信。
但是我們的微信和QQ每次可不是固定埠和地址的,因為有時候我們用電腦,有時後用手機,或者手機很多換著來,按照前面的思路,那一個QQ用戶是如何找到另外一個QQ用戶的呢?
過程其實是這樣的,QQ客戶端會請求一個連接給伺服器,伺服器接收後,知道QQ端用戶上線,把qQQ端用戶的帳號跟目前的ip會記錄下來,放在在線列表裡或者其他的地方,然後每隔幾分鐘或者幾秒鐘給QQ端用戶發送心跳包,問他是否還在線,來確保QQ端用戶的最 新狀態,這裡客戶端與伺服器的通信方式是udp。
今天要實現的是一個群聊小程序,程序有一個服務端和一個客戶端,客戶端有一個下面如下:
當用戶連接上伺服器後,伺服器就會給用戶發送恭喜你已經加入python學習群(後面還會實現在左側顯示用戶的名字),當還有其它用戶繼續加入時,會通知已經加入的用戶,說某個用戶加入python學習群,之後不管哪個用戶發送消息,大家的窗口中都會顯示出消息來,就好像大家在一個群裡一樣(更高級的還可以選擇在線人員,點對點在兩人私聊)。
下面是初版的運行效果圖,服務端為了顯示效果,保留了終端輸出,理論上是躲在後臺什麼也不用顯示的。
不斷有用戶加入,新用戶加入會說恭喜你加入,其它用戶會被通知某某加入群聊。
當其中任意一個用戶發送消息,其它用戶都會同步收到。
實現思路:
1.先實現一個簡單的終端顯示連接的功能,保證最小功能可以實現。
2.使用QtCreator製作一個UI用戶界面。
3.實現UI界面本地的消息發送和接收。
4.將本地的接收替換成socket接收。
5.加入多線程和消息發送,實現既可以顯示UI界面,發送消息和接收消息。
(全文完)
python字符的編碼與解碼
python滑鼠連點器-測試版
python遞歸算法(下)
教你實現一個gif處理軟體(下)