while True: #消息主循环 data = s.recv(1024) data = data.decode() msg = data.split(':;') if len(msg) == 1: # 是用户列表消息 data = json.loads(data) # 还原为列表对象 请完善接收用户列表消息和用户好友列表消息
时间: 2024-01-01 08:04:21 浏览: 82
当接收到用户列表消息和用户好友列表消息时,可以按照以下方式进行处理:
1. 接收用户列表消息:
```python
if len(msg) == 1 and msg[0] == 'userlist': # 是用户列表消息
data = s.recv(1024)
data = data.decode()
user_list = json.loads(data) # 还原为列表对象,存储所有在线用户的用户名
```
2. 接收用户好友列表消息:
```python
if len(msg) == 1 and msg[0] == 'friendlist': # 是用户好友列表消息
data = s.recv(1024)
data = data.decode()
friend_list = json.loads(data) # 还原为列表对象,存储当前用户的好友列表
```
其中,`user_list` 和 `friend_list` 都是列表对象,可以根据需要进行处理或展示。
相关问题
def recv(): global users while True: # 消息主循环 data = s.recv(1024) data = data.decode() msg = data.split(':;') if len(msg) == 1: # 是用户列表消息 data = json.loads(data) # 还原为列表对象 print(data) if data[0] == '===== 群聊 =====': users = data online_list.delete(0,tkinter.END) # 清空列表框 number = ' 在线用户:'+str(len(data)) online_list.insert(tkinter.END, number) online_list.itemconfig(tkinter.END,fg='green',bg='#f0f0ff') online_list.insert(tkinter.END,'===== 群聊 =====') online_list.insert(tkinter.END,'Robot') online_list.itemconfig(tkinter.END,fg='green') for i in range(len(data)): online_list.insert(tkinter.END,data[i]) online_list.itemconfig(tkinter.END,fg='green') else: 请编写用户好友列表代码
好的,以下是一个简单的用户好友列表代码示例:
```
import tkinter
root = tkinter.Tk()
root.title("用户好友列表")
# 在线用户列表框
online_list = tkinter.Listbox(root, width=50)
online_list.pack(side=tkinter.LEFT, fill=tkinter.BOTH)
# 好友列表框
friends_list = tkinter.Listbox(root, width=50)
friends_list.pack(side=tkinter.LEFT, fill=tkinter.BOTH)
# 添加在线用户列表
online_list.insert(tkinter.END, "在线用户")
online_list.insert(tkinter.END, "user1")
online_list.insert(tkinter.END, "user2")
online_list.insert(tkinter.END, "user3")
# 添加好友列表
friends_list.insert(tkinter.END, "好友列表")
friends_list.insert(tkinter.END, "friend1")
friends_list.insert(tkinter.END, "friend2")
friends_list.insert(tkinter.END, "friend3")
root.mainloop()
```
该代码创建了一个窗口并在左侧添加了一个在线用户列表框,右侧添加了一个好友列表框,并向列表框中添加了一些示例用户和好友。你可以根据自己的需求来修改和扩展它。
def recv(): global users, friends while True: # 消息主循环 data = s.recv(1024) data = data.decode() msg = data.split(':;') if len(msg) == 1: # 是用户列表消息 data = json.loads(data) # 还原为列表对象 print(data) if data["type"] == "online_list": # 在线列表消息 users = data["data"] online_list.delete(0,tkinter.END) # 清空列表框 number = ' 在线用户:'+str(len(users)) online_list.insert(tkinter.END, number) online_list.itemconfig(tkinter.END, fg='green', bg='#f0f0ff') online_list.insert(tkinter.END, '===== 群聊 =====') online_list.insert(tkinter.END, 'Robot') online_list.itemconfig(tkinter.END, fg='green') for i in range(len(users)): online_list.insert(tkinter.END, users[i]) online_list.itemconfig(tkinter.END, fg='green') elif data["type"] == "friend_list": friends = data["data"] friend_list.delete(0, tkinter.END) # 清空好友列表框 number = ' 用户好友:' + str(len(friends)) friend_list.insert(tkinter.END, number) friend_list.itemconfig(tkinter.END, fg='green', bg='#f0f0ff') for i in range(len(friends)): friend_list.insert(tkinter.END, friends[i]) friend_list.itemconfig(tkinter.END, fg='green') 出错error:data = json.loads(data) 请修改代码
可以在代码开头导入json模块,然后将data转换为json格式的字符串之后再进行解码,代码如下:
```
import json
def recv():
global users, friends
while True: # 消息主循环
data = s.recv(1024)
data = data.decode()
msg = data.split(':;')
if len(msg) == 1: # 是用户列表消息
data = json.loads(data) # 还原为列表对象
print(data)
if data["type"] == "online_list": # 在线列表消息
users = data["data"]
online_list.delete(0,tkinter.END) # 清空列表框
number = ' 在线用户:'+str(len(users))
online_list.insert(tkinter.END, number)
online_list.itemconfig(tkinter.END, fg='green', bg='#f0f0ff')
online_list.insert(tkinter.END, '===== 群聊 =====')
online_list.insert(tkinter.END, 'Robot')
online_list.itemconfig(tkinter.END, fg='green')
for i in range(len(users)):
online_list.insert(tkinter.END, users[i])
online_list.itemconfig(tkinter.END, fg='green')
elif data["type"] == "friend_list":
friends = data["data"]
friend_list.delete(0, tkinter.END) # 清空好友列表框
number = ' 用户好友:' + str(len(friends))
friend_list.insert(tkinter.END, number)
friend_list.itemconfig(tkinter.END, fg='green', bg='#f0f0ff')
for i in range(len(friends)):
friend_list.insert(tkinter.END, friends[i])
friend_list.itemconfig(tkinter.END, fg='green')
```
这样修改后,当接收到的数据是json格式的字符串时,就可以使用json.loads()方法将其转换为python对象了。
阅读全文