溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何用Python制作只屬于你和ta的聊天渠道

發(fā)布時間:2021-10-19 09:40:11 來源:億速云 閱讀:119 作者:柒染 欄目:大數據

這篇文章將為大家詳細講解有關如何用Python制作只屬于你和ta的聊天渠道,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

是否擔心微信的數據流會被監(jiān)視?是否擔心你和ta聊天的小秘密會被保存到某個數據庫里?沒關系,現在我們可以用Python做一個只屬于你和ta的聊天渠道,來解除你們心中的擔憂,畢竟只有自己做的東西才最放心。

1.原理簡介

在我們今天的教程中,將用到即時通訊的概念,即時通訊允許兩人或多人同時使用網絡傳遞文字信息、文字、語音等。即時通訊一般都基于socket連接,socket連接可用于發(fā)送或接受數據,一般的組合形式是IP+端口號。

也就是說,在我們的例子中,聊天的雙方,由一方要承擔“服務器 ” 的責任,維持一個socket服務器,等待連接進入;另一方則是“客戶端”,在服務器端維持等待狀態(tài)時即可發(fā)送請求,建立連接。

當你和ta想進入“小黑屋 ” 里聊天的時候,只有有一方充當服務器,另一方充當客戶端即可,作為“服務器端 ” 的那個人,在微信中將IP和端口號告訴對方,即可構建連接,在小黑屋里聊天,這個小黑屋里的數據不會被任何數據庫保留(除非你自己做了一個保存的數據庫)。

2.代碼編寫

好了,基本原理我們已經講清楚了。不過,在開始教程之前,你得先安裝好了Python,如果還沒有安裝,可以看這篇文章:<基礎教程>Python超詳細安裝指南

2.1 服務器端

聊天的時候,我們有時候會遇到雙方同時發(fā)消息的情況。這種聊天方式就叫全雙工聊天方式:“服務器”可向“客戶端”發(fā)送消息,“客戶端”也可向“服務端”發(fā)送消息,而且允許同時發(fā)送消息。

服務器端怎么實現全雙工的聊天方式呢?其實很簡單,只要用多線程就行了,主線程用于接收客戶端的連接,連接成功后新建兩個線程:一個用于發(fā)送消息,一個用于接收消息:

首先,建立socket服務器:

如何用Python制作只屬于你和ta的聊天渠道


其中,AF_INET指的是用IPv4進行通信,而SOCK_STREAM指的是TCP協(xié)議。端口號你可以隨意設定,服務器端的IP地址默認為空即可。

在while循環(huán)中不斷等待用戶的連接。如果有用戶連接成功了,我們將進入下一步,分別建立發(fā)送和接受線程:

如何用Python制作只屬于你和ta的聊天渠道

clientsock就是我們得到的socket連接,processRecv和processSend分別用于處理接受信息和處理發(fā)送信息:

如何用Python制作只屬于你和ta的聊天渠道


有個小細節(jié)要注意,socket連接的sendall函數只支持bytes類型的數據,所以我們要encode('utf-8')。

服務端的所有代碼就這樣,沒錯,就是這么簡單。

2.2 客戶端

客戶端則更簡單,主線程本身設定為接受消息,那么我們只需要多一個線程用于發(fā)送消息即可??蛻舳说娜看a如下:

如何用Python制作只屬于你和ta的聊天渠道


其中,HOST部分填寫對方的IP,PORT部分填寫端口號。sys.argv用于通過參數輸入這兩個值,比如我們將客戶端文件命名為:client.py, 在cmd中輸入:

python client.py 127.0.0.1 51423

能直接傳入參數執(zhí)行腳本,除此之外,其他部分和服務端其實差不多。注意把接受到的數據decode一下(因為我們發(fā)的時候encode了)。

3. 改進

實際上,這份代碼雖然可以用,但是還是存在許多問題的。比如在你們聊天的時候,突然又有一個人向服務端發(fā)送連接請求怎么辦?這時候我們需要在服務端加一份擁有驗證的代碼,要求對方輸入聊天室密碼后才可建立連接。

這個密碼必須是你們雙方才知道的密碼,任何通過第三方工具傳播密碼的行為都是不可靠和不安全的。這樣才可以防止第三者的偷聽。增加一個密碼功能其實也不難,這部分交給大家自己去實現啦!

關于如何用Python制作只屬于你和ta的聊天渠道就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI