python專案練習五 虛擬茶話會

2021-06-22 03:51:06 字數 1466 閱讀 5688

幾乎在學習、使用任何一種程式語言的時候,關於socket的練習從來都不會少,尤其是會寫一些區域網的通訊的東西。所以書上的這個專案剛好可以練習一下socket程式設計。

這個練習的整體思路首先有乙個聊天的伺服器,這個伺服器的功能主要是提供客戶端socket的連線、儲存每個客戶端的連線session,處理每個連線傳送的訊息、解析客戶端傳送的資料。就這些,至於客戶端方面不需要寫**,用系統的telnet工具即可。

我覺得有了上面的分析,剩下的這個程式就沒有什麼說的了,當然,除了那兩個把socket封裝的類之外。

自己使用python中的socket類嘗試這個編寫了乙個簡單的通訊程式,不過不知為什麼,通訊中總是出現意外。這段簡單的**如下:

server.py

import socket

mysocket = socket.socket(socket.af_inet,socket.sock_stream)

mysocket.bind(('',8888))

mysocket.listen(5)

while true:

connection,addr = mysocket.accept()

revstr = connection.recv(1024)

connection.send('server:' + revstr)

connection.close()

clinet.py

import socket

import time

clientsocket = socket.socket(socket.af_inet, socket.sock_stream)

clientsocket.connect(('',8888))

while true:

time.sleep(2)

clientsocket.send('hello the5fire')

print clientsocket.recv(1024)

clientsocket.close()

這個程式出錯的原因沒有去細揪,因為python中提供了兩個封裝好的類來完成socket通訊過程:asynchat中的async_chat和asyncore中的dispatcher以及asyncore本身。前面的類是用來處理客戶端同伺服器的每一次會話,後面的類主要是用來提供socket連線服務。並且將每乙個socket連線都託管給前者(async_chat)來處理。

來看**:

整個程式分為我一開始說的三個部分:

提供客戶端的socket連線:chatserver類。

儲存每個客戶端的連線session,處理每個連線傳送的訊息:chatsession類,這個類的作用很簡單,接受資料,判斷是否有終結符,如果有呼叫found_terminator這個方法。

最終截圖:

python新手專案 新手練習Python專案

python毫無疑問是一門很偉大的語言,最近幾年,很多人都在python的世界裡轉悠。也有很多對程式設計有著濃厚的興趣但是不是相關專業的朋友開始學習python,這固然是好事情。但是很多時候,你只是看到了一棵樹,你以為你看到的是整個森林,尤其對於非專業的朋友來說。因此,做一些練手的專案就顯得尤為重要...

後端 Python 專案練習集

1 1.2 3knowledge point 41.練習if.else 52.練習while 63.練習列表的切片取值 78 requirements 9購物車 101.程式啟動後,輸入工資,列印商品列表 112.提示使用者根據商品編號購買產品 123.選擇商品後檢測餘額是否足夠,扣款或提醒餘額不足...

Python程式設計 pipenv管理專案虛擬環境

pip install pipenv在專案根目錄執行以下語句,常用命令如下 pipenv python 3.6 使用python 3.6 建立虛擬環境 pipenv install 初始化環境 pipenv install requests 安裝模組 pipenv install requests ...