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

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

創(chuàng)新互聯(lián)專注于道縣企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城網(wǎng)站開發(fā)。道縣網(wǎng)站建設(shè)公司,為道縣等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站建設(shè),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

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

1.原理簡介

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

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

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

2.代碼編寫

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

2.1 服務(wù)器端

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

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

首先,建立socket服務(wù)器:

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


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

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

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

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

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


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

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

2.2 客戶端

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

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


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

python client.py 127.0.0.1 51423

能直接傳入?yún)?shù)執(zhí)行腳本,除此之外,其他部分和服務(wù)端其實(shí)差不多。注意把接受到的數(shù)據(jù)decode一下(因?yàn)槲覀儼l(fā)的時候encode了)。

3. 改進(jìn)

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

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

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

當(dāng)前名稱:如何用Python制作只屬于你和ta的聊天渠道
標(biāo)題URL:http://muchs.cn/article46/pieoeg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航企業(yè)網(wǎng)站制作、標(biāo)簽優(yōu)化、微信公眾號、網(wǎng)站排名全網(wǎng)營銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)