91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

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

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

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

1.原理簡介

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

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

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

2.代碼編寫

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

2.1 服務器端

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

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

首先,建立socket服務器:

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


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

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

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

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

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


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

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

2.2 客戶端

客戶端則更簡單,主線程本身設定為接受消息,那么我們只需要多一個線程用于發送消息即可。客戶端的全部代碼如下:

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


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

python client.py 127.0.0.1 51423

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

3. 改進

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

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

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

向AI問一下細節

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

AI

来凤县| 凌云县| 凤凰县| 武邑县| 昌都县| 隆化县| 鄂伦春自治旗| 玉溪市| 林周县| 东丰县| 绍兴县| 台南县| 德保县| 邢台县| 厦门市| 九龙城区| 大姚县| 青浦区| 博湖县| 开化县| 桐柏县| 满城县| 荣成市| 定日县| 白城市| 富民县| 山丹县| 兰西县| 吴桥县| 响水县| 长乐市| 鹤峰县| 高阳县| 罗江县| 芷江| 大荔县| 惠水县| 韶关市| 河津市| 龙门县| 江城|