我怎么能终止

时间:2013-11-16 23:14:58

标签: python sockets

我正在学习socket编程和python。对于学校作业,我创建了一个运行的服务器,但我不知道如何终止它。该指令说我的服务器反复运行,直到主管终止(不要引导打开的套接字)。有人可以给我一个例子或指出我正确的方向吗?非常感谢!

以下是我的代码的一部分:

import socket
import sys
import os

def main():
    #HOST = ''
    #PORT = 8888

    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    print 'Socket created'

    try:
        server_socket.bind((HOST, PORT))    #bind to a address(and port)
    except socket.error, msg:
        print 'Bind failed. Error Code : ' + str(msg[0]) + ' Message ' + msg[1]
        sys.exit()

    print 'Socket bind complete'

    #put the socket in listening mode
    server_socket.listen(10)     #maximum 10 connections
    print 'TCP Server Waiting for client on port 30021'

    #wait to accept a connection - blocking call
    client, addr = server_socket.accept()
    #display client information
    print 'Connected with ' + addr[0] + ':' + str(addr[1])

    try:
        #keep talking with the client
        while 1:
            #Receiving from client
            data = client.recv(1024)
            if not data:
                break

            #DO SOMETHING HERE

    except KeyboardInterrupt:
        print "Exiting gracefully."
    finally:
        server_socket.close()

if __name__ == "__main__":
    main()

1 个答案:

答案 0 :(得分:2)

如果您以交互方式运行它(也就是说,您使用例如python myprogram.py./myprogram.py启动它并且您有一个可以看到其输出的控制台),您应该能够按 CTRL C 发送一个中断。然后,您应该看到“退出优雅”消息,它应该终止。

如果您以其他方式运行它,如何终止它取决于您使用的平台。如果您使用的是Windows,则应该能够找到python.exepythonw.exe进程,并在任务管理器中按结束进程。如果您使用的是POSIX系统,则可能会找到ps的流程,并以kill -INT id结束,其中id是您从{ps获取的流程ID 1}}。