使用raw_input()退出PYTHON应用程序

时间:2015-05-06 22:38:32

标签: python

我制作了一个控制台应用程序,允许我在个人聊天中与其他人交谈。我想允许两个用户在键入quit时结束连接。

请注意,即使用户关闭终端,端口仍在监听。

import socket
import threading

bind_ip = "0.0.0.0"
bind_port = 8887

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

server.bind((bind_ip,bind_port))

server.listen(5)

print "[*] Listening on %s:%d" % (bind_ip, bind_port)

def handle_client(client_socket):

    while True:

        client_socket.send(raw_input('\n'))
        request = client_socket.recv(1024)
        print "[*] Received: %s" % request

        if exit == "exit":
            client_socket.close()

while True:

    client, addr = server.accept()

    print "[*] Accepted connection from %s:%d" % (addr[0], addr[1])

    client_handler = threading.Thread(target=handle_client,args=(client,))
    client_handler.start()

1 个答案:

答案 0 :(得分:4)

这里有多个问题。

  • 远程用户无法通过键入'quit'退出,因为您正在检查'exit'而不是'quit'
  • 你没有检查request,这是他的实际要求;你正在检查exit这是一个函数对象,它永远不会等于任何字符串。
  • 你拨打client_socket.close(),但是你没有break离开循环,所以它会直接回到循环的顶部。
  • 虽然您声称检查raw_input“正是我所做的”,但您并没有这样做。这是raw_input client_socket.send(raw_input('\n'))while True: msg = raw_input('\n') if msg == "quit": break client_socket.send(msg) request = client_socket.recv(1024) print "[*] Received: %s" % request if request == "quit": break client_socket.close() 唯一的地方,您显然没有在那里查看任何内容。

所以,要解决所有这些问题:

<div style="background: #f6f2ea url(images/file.jpg) no-repeat center center;
min-height: 50%; background-size:cover;">

            <div id="overlay-black">
            <div>
                <h3 class="bg-color">TEXT</h3>
            </div> 
            </div>
    </div>

您的设计和代码还有其他非常大的问题,但修复这4个问题至少会让您进入下一个问题。