def confirm(): friend_name = name_entry.get() if friend_name: msg = 'add_friend:' + user + friend_name s.send(msg.encode('utf-8')) res = s.recv(1024).decode('utf-8') if res.startswith('Error:'): messagebox.showerror('Error', res) else: messagebox.showinfo('Success', '添加好友成功') add_window.destroy() 请在此基础上实现好友添加,申请通过,成功添加为好友这些功能
时间: 2024-01-30 18:04:11 浏览: 89
login_confirm.rar_confirmlogin_login confirm_login confirm_logi
好友添加、申请通过和成功添加为好友这些功能的实现需要分为两个部分:客户端和服务器端。客户端需要与服务器端进行通信,向服务器端发送请求,服务器端接收请求并进行相应的处理,最后将处理结果返回给客户端。
下面是客户端的实现代码:
```
# 好友添加
def add_friend():
friend_name = name_entry.get()
if friend_name:
msg = 'add_friend:' + user + friend_name
s.send(msg.encode('utf-8'))
res = s.recv(1024).decode('utf-8')
if res.startswith('Error:'):
messagebox.showerror('Error', res)
else:
messagebox.showinfo('Success', '添加好友成功')
add_window.destroy()
# 申请通过
def confirm_friend():
friend_name = name_entry.get()
if friend_name:
msg = 'confirm_friend:' + user + friend_name
s.send(msg.encode('utf-8'))
res = s.recv(1024).decode('utf-8')
if res.startswith('Error:'):
messagebox.showerror('Error', res)
else:
messagebox.showinfo('Success', '申请通过')
add_window.destroy()
# 成功添加为好友
def success_friend():
friend_name = name_entry.get()
if friend_name:
msg = 'success_friend:' + user + friend_name
s.send(msg.encode('utf-8'))
res = s.recv(1024).decode('utf-8')
if res.startswith('Error:'):
messagebox.showerror('Error', res)
else:
messagebox.showinfo('Success', '成功添加为好友')
add_window.destroy()
```
其中,`add_friend` 函数用于添加好友,`confirm_friend` 函数用于申请通过,`success_friend` 函数用于成功添加为好友。这三个函数都会向服务器发送请求,并根据服务器的响应做出相应的处理,最后关闭添加好友窗口。
服务器端的实现需要根据请求的类型进行相应的处理,下面是服务器端的实现代码:
```
def handle_msg(msg):
global users, friends, requests
cmd, msg = msg.split(':', 1)
if cmd == 'add_friend':
user, friend_name = msg.split(',')
if user in friends:
if friend_name in friends[user]:
return 'Error:已经是好友关系'
elif friend_name in requests[user]:
return 'Error:已经发送过好友申请'
else:
requests[user].append(friend_name)
return '发送好友申请成功'
else:
friends[user] = []
requests[user] = [friend_name]
return '发送好友申请成功'
elif cmd == 'confirm_friend':
user, friend_name = msg.split(',')
if friend_name in requests[user]:
friends[user].append(friend_name)
friends[friend_name].append(user)
requests[user].remove(friend_name)
return '通过好友申请'
else:
return 'Error:没有收到该好友申请'
elif cmd == 'success_friend':
user, friend_name = msg.split(',')
if friend_name in friends[user]:
return 'Error:已经是好友关系'
elif friend_name not in requests[user]:
return 'Error:没有该好友申请'
else:
friends[user].append(friend_name)
friends[friend_name].append(user)
requests[user].remove(friend_name)
return '成功添加为好友'
else:
return 'Error:无效的命令'
```
其中,`handle_msg` 函数用于处理客户端发送的请求。如果请求类型为 `add_friend`,则将好友申请添加到请求列表中;如果请求类型为 `confirm_friend`,则将好友申请通过;如果请求类型为 `success_friend`,则将好友添加到好友列表中。如果请求类型无效,则返回错误信息。在处理请求之前,需要在全局变量 `users`、`friends` 和 `requests` 中维护用户列表、好友列表和请求列表。
阅读全文