首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python套接字如何关闭命令行连接

问Python套接字如何关闭命令行连接
EN

Stack Overflow用户
提问于 2019-11-23 14:13:54
回答 3查看 5.4K关注 0票数 1

我正在使用python中的套接字,无法找到一种方法来关闭命令行中的“服务器”连接。ctrl+c,ctrl+z不工作。

我的server.py文件:

代码语言:javascript
复制
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上的
  • 确实允许我在同一个端口上重新启动脚本,但是我仍然无法停止脚本。我仍然需要关闭终端才能停止脚本。
EN

回答 3

Stack Overflow用户

发布于 2019-11-23 16:07:04

您可以打开所有侦听端口

netstat -tulpn | FINDSTR LISTEN | FINDSTR PORTNUMBER (可能需要一些修改--对windows命令不确定)。

那就杀了这个过程。

票数 0
EN

Stack Overflow用户

发布于 2019-11-23 16:25:43

您也可以在下面试一试,看看它是否有效。

若要关闭服务器,请在关闭前使用关机:

代码语言:javascript
复制
def close():
    server.shutdown(socket.SHUT_RDWR)
    server.close()

为了重用地址,请在绑定套接字之前使用下面的内容:

代码语言:javascript
复制
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
票数 0
EN

Stack Overflow用户

发布于 2019-11-23 16:35:10

也许试着做:

代码语言:javascript
复制
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关闭您的程序,并让您重新启动它而不更改地址。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59008517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档