Chat_IPv6
1.0.0
實現兩台主機之間的文字聊天通信,通信在IPv6環境下進行,完成了登入和註冊功能、點對點聊天、群組聊天等功能。
UDP是一個無連接協議,傳輸資料之前源端和終端不建立連接,當它想傳送時就簡單地去抓取來自應用程式的數據,並儘可能快地把它扔到網路上。
通訊協定層面主要用到的方法為:
socket([family[, type[, proto]]])
bind(address: Union[_Address, bytes])
sendto(data, address,)
recvfrom(bufsize, flags,)
在程式設計的過程中需要用到資料庫來儲存使用者的使用者名稱、密碼、狀態,使用者IP位址和連接埠。在資料庫選擇的時候,用到的是SQLite3輕量級資料庫,方便資料庫的遷移等。
函數名 | 功能 |
---|---|
init(self) | 用來建立和開啟資料庫 |
select_all(self) | 用來取得資料庫對應表中的所用使用者信息 |
register(self, username, password, ip, port) | 註冊時調用,用於添加用戶信息 |
search_username(self, username) | 根據用戶名查找用戶資訊 |
login_success(self, username, ip, port) | 登入成功後,更改資料庫中的使用者狀態訊息 |
login_check(self, username, password, ip, port) | 登入時用於檢查使用者名稱和密碼是否正確 |
logout_success(self, username) | 當使用者登出登陸時,變更使用者的狀態 |
db_close(self) | 關閉資料庫 |
在兩台可以通訊的主機上分別進入程式碼所在目錄,分別執行python3 Client.py
和python3 Server.py
。客戶端可以根據需求實現多開,伺服器只能開一個。在開啟伺服器的同時會開啟資料庫。
根據提示,進行選擇,可以實現不同的功能。在點對點聊天中,任一方發送END,即可關閉聊天,另一方依指示確認即可。群組聊天的實作原理類似,運行測試過程也類似。