資源簡(jiǎn)介
用Python自帶socket庫(kù)和tkinter開(kāi)發(fā)的一個(gè)簡(jiǎn)單的聊天室實(shí)現(xiàn)。可以創(chuàng)建一個(gè)服務(wù)器,通過(guò)不同的計(jì)算機(jī)進(jìn)行聊天。
代碼片段和文件信息
import?datetime
import?json
from?enum?import?Enum
class?msgType(Enum):
????no_action?=?0
????login?=?1
????logout?=?2
????enter_room?=?3
????leave_room?=?4
????send_message?=?5
????create_room?=?6
????login_ack?=?7
????logout_ack?=?8
????update_room_users?=?9
????leave_room_ack?=?10
????create_room_ack?=?11
????query_room_list?=?12
????query_room_list_ack?=?13
????enter_room_ack?=?14
????update_room_list?=?15
????tk_login_succeed?=?100
????tk_login_fail?=?101
????tk_update_room_list?=?102
????tk_create_room_ack?=?103
????tk_enter_room_ack?=?104
????tk_update_room_user_list?=?105
????tk_update_msg?=?106
????
????
class?chatRoom:
????def?__init__(self):
????????self.__roomname?=?‘‘
????????self.__userList?=?[]
????????
????????
????@property
????def?name(self):
????????return?self.__roomname
????????
????@property
????def?userlist(self):
????????return?self.__userList
????????
????@name.setter
????def?name(self?name):
????????self.__roomname??=?name
????????
????@userlist.setter
????def?userlist(self?userlist):
????????self.__userList??=?userlist
????????
????def?to_json(self):
????????json_data?=?{}
????????json_data[‘name‘]?=?self.__roomname
????????json_data[‘userlist‘]?=?self.__userList
????????return?json.dumps(json_data)
????
????def?from_jsonstring(self?json_string):
????????json_data?=?json.loads(json_string)
????????self.__roomname?=?json_data[‘name‘]
????????self.__userList?=?json_data[‘userlist‘]
class?chatRoomList:
????def?__init__(self):
????????self.__roomList?=?[]
????
????@property
????def?roomlist(self):
????????return?self.__roomList
????????
????@roomlist.setter
????def?roomlist(self?roomlist):
????????self.__roomList?=?roomlist
????????
????def?to_json(self):
????????return?json.dumps(self.__roomList)
????????
????def?from_jsonstring(self?json_string):
????????self.__roomList?=?json.loads(json_string)
????
class?chatMsg:
????__datetime_format?=?‘%Y-%m-%d?%H:%M:%S‘
????
????def?__init__(self):
????????self.__msg_datetime?=?datetime.datetime.now()
????????self.__msg_content?=?‘‘
????????self.__senderName?=?‘‘
????????self.__receiverID?=?0
????????self.__roomname?=?‘‘
????????
????????
????def?to_json(self):
????????json_data?=?{}
????????json_data[‘datetime‘]?=?self.__msg_datetime.strftime(self.__datetime_format)
????????json_data[‘content‘]?=?self.__msg_content
????????json_data[‘receiver‘]?=?self.__receiverID
????????json_data[‘sender‘]?=?self.__senderName
????????json_data[‘room‘]?=?self.__roomname
????????return?json.dumps(json_data)
????????
????def?from_jsonstring(self?json_string):
????????json_data?=?json.loads(json_string)
????????self.__msg_datetime?=?datetime.datetime.strptime(json_data[‘datetime‘]?self.__datetime_format)
????????self.__msg_content?=?json_data[‘content‘]
????????self.__receiverID?=?json_data[‘receiver‘]
????????self.__senderName?=?json_data[‘sender‘]
????????self.__roomname?=?json_data
評(píng)論
共有 條評(píng)論