修改 我目前正在开发基于Python的聊天系统。我在下面发布了一个问题,但是编辑它对我要找的内容更加狭窄。系统具有默认功能,无论何时输入LOGGED_IN状态,如果它不是命令,则显示聊天系统的菜单。 我的问题是我正在处理一个随机函数,尽管存在函数,菜单仍然出现,我怀疑客户端代码在这里有问题,但我似乎无法发现我的错误,这里是代码的摘录,完整文件链接如下:
elif my_msg[0:6]=="random":
mysend(self.s,json.dumps({"action":"random"}))
allresults = json.loads(myrecv(self.s))["results"]
result = allresults[0]
user=allresults[1]
if result: #==True
self.out_msg+="Peer Found\n"
self.out_msg+="Connecting you now...\n\n"
self.out_msg+='-----------------------------------\n'
if self.connect_to(user) == True:
self.state = S_CHATTING
if my_msg[7:]=="anon":
self.out_msg += 'Connected to anonymous user. Chat away!\n\n'
else:
self.out_msg += 'Connect to ' + user + '. Chat away!\n\n'
self.out_msg += '-----------------------------------\n'
else:
self.out_msg += 'An error occurred, please try again.\n'
else:
self.out_msg+="Peer not found, please try again later"
非常感谢任何帮助,我目前正在调试,但想到有人可能会看到我没有的东西
结束编辑
我目前正在与一些朋友一起研究基于Python的聊天系统,以了解有关内部工作的更多信息。我们一直在尝试实现和使用的一些关键功能是: - 一个大厅(人们可以随时调整的聊天室) - 随机连接功能(将用户随机连接在一起,有点像omegle) - 和加密。最后一点不一定非常复杂,但如果您有任何建议如何让它变得更好,我会很高兴听到它们。
文件位于here,我非常感谢您对大厅和随机函数发生的错误的任何反馈或洞察!
注意:要考虑的文件是:
以下是服务器端的随机函数
elif msg["action"]=="random":
name=self.logged_sock2name[from_sock]
self.availableUsers = self.group.listloners()
self.consent = False
while (len(self.availableUsers)>0 and self.consent != True):
to_name = random.choice(availableUsers)
to_sock = self.logged_name2sock[to_name]
mysend(to_sock, json.dumps({"action":"consent"}))
#waiting for response
self.consent= json.loads(myrecv(self.s))["consent"]
if self.consent == True:
result= True
user = self.logged_sock2name[to_sock]
else:
result = False
user = ""
self.availableUsers.remove(to_name)
mysend(from_sock, json.dumps({"action":"random", "results":[result,user]}))
这是来自客户端的随机函数:
elif my_msg[0:6]=="random":
mysend(self.s,json.dumps({"action":"random"}))
allresults = json.loads(myrecv(self.s))["results"]
result = allresults[0]
user=allresults[1]
if result: #==True
self.out_msg+="Peer Found\n"
self.out_msg+="Connecting you now...\n\n"
self.out_msg+='-----------------------------------\n'
if self.connect_to(user) == True:
self.state = S_CHATTING
if my_msg[7:]=="anon":
self.out_msg += 'Connected to anonymous user. Chat away!\n\n'
else:
self.out_msg += 'Connect to ' + user + '. Chat away!\n\n'
self.out_msg += '-----------------------------------\n'
else:
self.out_msg += 'An error occurred, please try again.\n'
else:
self.out_msg+="Peer not found, please try again later"
和
if len(peer_msg) > 0:
peer_msg = json.loads(peer_msg)
consent=False
if peer_msg["action"] == "connect":
self.connect_to(peer_msg["from"])
self.set_state(S_CHATTING)
elif peer_msg["action"]=="consent":
self.out_msg += "A random user wants to connect with you?\n"
self.out_msg += "Would you like to accept the connection? (y or n)\n"
while my_msg != "y" and my_msg!="n":
self.out_msg += "Please only reply with 'y' or 'n'\n"
if my_msg=="y":
self.connect_to(peer_msg["from"])
self.set_state(S_CHATTING)
consent=True
mysend(self.s,json.dumps({"message":consent}))
self.out_msg+="Connecting you now...\n\n"
else:
consent=False
mysend(self.s, json.dumps({"action":"random", "consent":consent}))
我的系统正常工作,只是这些部分很难绕过。 此外,服务器和客户端文件中的“大厅”文件和功能无法完全发挥作用,但我自己很难找到错误。