python - Python套接字如何关闭命令行连接
问题描述
我在 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 上
- SO_REUSEADDR 确实允许我在同一端口上重新启动脚本,但是我仍然无法停止脚本。我仍然必须关闭终端才能停止脚本。
解决方案
您也可以在下面尝试,看看它是否有效
要关闭服务器,请在关闭之前使用 shutdown :
def close():
server.shutdown(socket.SHUT_RDWR)
server.close()
为了重用地址,请在绑定套接字之前使用以下内容:
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)