我正在使用python中的套接字,无法找到一种方法来关闭命令行中的“服务器”连接。ctrl+c,ctrl+z不工作。
我的server.py文件:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((socket.gethostname(), 1235))
s.listen(5)
while True:
clientsocket, address = s.accept()
print(f"connection from {address} has been established!")
clientsocket.send(bytes("Welcome to the server!", "utf-8"))
clientsocket.close()如果我更新这个文件,我必须关闭终端并重新运行脚本。我必须更改端口号,因为原来的端口被占用了。教程中的人必须做同样的事情,但我无法想象这是做事情的最好方法。是否有命令关闭连接、清除端口等,允许我重新启动脚本?
Windows 10
发布于 2019-11-23 16:07:04
您可以打开所有侦听端口
netstat -tulpn | FINDSTR LISTEN | FINDSTR PORTNUMBER (可能需要一些修改--对windows命令不确定)。
那就杀了这个过程。
发布于 2019-11-23 16:25:43
您也可以在下面试一试,看看它是否有效。
若要关闭服务器,请在关闭前使用关机:
def close():
server.shutdown(socket.SHUT_RDWR)
server.close()为了重用地址,请在绑定套接字之前使用下面的内容:
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)发布于 2019-11-23 16:35:10
也许试着做:
import sys
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
while True:
try:
clientsocket, address = s.accept()
print(f"connection from {address} has been established!")
clientsocket.send(bytes("Welcome to the server!", "utf-8"))
clientsocket.close()
except KeyboardInterrupt:
print(f"closing connection to {address}.")
clientsocket.shutdown(socket.SHUT_RDWR)
clientsocket.close()
sys.exit()这应该允许您使用Ctrl +C关闭您的程序,并让您重新启动它而不更改地址。
https://stackoverflow.com/questions/59008517
复制相似问题