Python套接字编程客户端"退出不工作

时间:2015-07-26 16:22:16

标签: python sockets

我使用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()

1 个答案:

答案 0 :(得分:0)

您的第if msg is quit行应为if msg == quitis测试身份,而不是平等。如果您正在测试两个对象是否相同,那么您可以在此处使用is。但是,由于您要比较两个字符串,因此必须使用==

此外,您的msg变量等于alias + -> + readline。因此"name -> /quit"永远不会等于'/quit'