我正在学习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()
答案 0 :(得分:2)
如果您以交互方式运行它(也就是说,您使用例如python myprogram.py
或./myprogram.py
启动它并且您有一个可以看到其输出的控制台),您应该能够按 CTRL C 发送一个中断。然后,您应该看到“退出优雅”消息,它应该终止。
如果您以其他方式运行它,如何终止它取决于您使用的平台。如果您使用的是Windows,则应该能够找到python.exe
或pythonw.exe
进程,并在任务管理器中按结束进程。如果您使用的是POSIX系统,则可能会找到ps
的流程,并以kill -INT id
结束,其中id
是您从{ps
获取的流程ID 1}}。