我使用Python制作了一个简单的聊天服务器。我从客户端退出程序时遇到了麻烦。连接后我需要输入" / quit"程序应该从双方,客户端和服务器断开连接。这是我的代码:
alias= raw_input("Name: ")
print 'Connected to remote host. You can start sending messages'
sys.stdout.write(alias + '->'); sys.stdout.flush()
while 1:
socket_list = [sys.stdin, s]
# Get the list sockets which are readable
read_sockets, write_sockets, error_sockets =
select.select(socket_list , [], [])
for sock in read_sockets:
if sock == s:
# incoming message from remote server, s
data = sock.recv(4096)
print data
if not data :
print '\nServer has ended Connection'
sys.exit()
else :
#print data
sys.stdout.write(data)
sys.stdout.write(alias + '->'); sys.stdout.flush()
else :
# user entered a message
msg = alias + '->' + sys.stdin.readline()
quit = '/quit'
#print msg == quit
print
if msg is quit:
print "Goodbye"
s.close()
sys.exit()
else:
s.send(msg)
sys.stdout.write(alias + '->')
sys.stdout.flush()
答案 0 :(得分:0)
您的第if msg is quit
行应为if msg == quit
。 is
测试身份,而不是平等。如果您正在测试两个对象是否相同,那么您可以在此处使用is
。但是,由于您要比较两个字符串,因此必须使用==
。
此外,您的msg
变量等于alias + -> + readline
。因此"name -> /quit"
永远不会等于'/quit'
。