国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python實現基于C/S架構的聊天室功能詳解

2020-02-15 22:13:46
字體:
來源:轉載
供稿:網友

本文實例講述了Python實現基于C/S架構的聊天室功能。分享給大家供大家參考,具體如下:

一、課程介紹

1.簡介

本次項目課是實現簡單聊天室程序的服務器端和客戶端。

2.知識點

服務器端涉及到asyncoreasynchatsocket這幾個模塊,客戶端用到了telnetlibwxtimethread這幾個模塊。

3.所需環境

本次課中編寫客戶端需要用到wxPython,它是一個GUI工具包,請先使用下面的命令安裝:

$ sudo apt-get install python-wxtools

密碼為shiyanlou

4.項目效果截圖

登錄窗口

聊天窗口

5.源代碼下載

git clone https://github.com/shiyanlou/pythonchat.git

說明:如果你不理解上述代碼的下載方式或者下載后在環境中找不到代碼,可以點擊查看這里

二、項目實戰(服務器端)

1.服務器類

首先需要一個聊天服務器,這里繼承asyncore的dispatcher類來實現,代碼如下

class ChatServer(dispatcher):  """  聊天服務器  """  def __init__(self, port):    dispatcher.__init__(self)    self.create_socket(socket.AF_INET, socket.SOCK_STREAM)    self.set_reuse_addr()    self.bind(('', port))    self.listen(5)    self.users = {}    self.main_room = ChatRoom(self)  def handle_accept(self):    conn, addr = self.accept()    ChatSession(self, conn)

2.會話類

有了服務器類還需要能維護每個用戶的連接會話,這里繼承asynchat的async_chat類來實現,代碼如下:

class ChatSession(async_chat):  """  負責和單用戶通信  """  def __init__(self, server, sock):    async_chat.__init__(self, sock)    self.server = server    self.set_terminator('/n')    self.data = []    self.name = None    self.enter(LoginRoom(server))  def enter(self, room):    '從當前房間移除自身,然后添加到指定房間'    try:      cur = self.room    except AttributeError:      pass    else:      cur.remove(self)    self.room = room    room.add(self)  def collect_incoming_data(self, data):    '接受客戶端的數據'    self.data.append(data)  def found_terminator(self):    '當客戶端的一條數據結束時的處理'    line = ''.join(self.data)    self.data = []    try:      self.room.handle(self, line)    except EndSession:      self.handle_close()  def handle_close(self):    async_chat.handle_close(self)    self.enter(LogoutRoom(self.server))

3.命令解釋器

現在就需要一個命令解釋器能夠解釋用戶的命令,例如登錄、查詢在線用戶和發消息等,代碼如下:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乌鲁木齐县| 武川县| 崇文区| 朔州市| 西昌市| 进贤县| 增城市| 柞水县| 常熟市| 兴和县| 奈曼旗| 冕宁县| 屏东市| 定西市| 民勤县| 蕲春县| 浮山县| 大埔县| 祁门县| 历史| 岗巴县| 磐安县| 漳浦县| 衡山县| 获嘉县| 永春县| 视频| 神木县| 顺昌县| 张掖市| 平罗县| 鹤峰县| 循化| 昭通市| 琼海市| 武汉市| 平山县| 海口市| 班戈县| 卢龙县| 汝南县|