有人知道如何通过windows命令行关闭单个连接的TCP或UDP套接字吗?

我在谷歌上搜索了一下,看到一些人也问了同样的问题。但是答案看起来像是netstat或netsh命令的手册页,重点关注如何监视端口。我不想要关于如何监控它们的答案(我已经这样做了)。我想干掉他们。

EDIT, for clarification: Let's say that my server listens TCP port 80. A client makes a connection and port 56789 is allocated for it. Then, I discover that this connection is undesired (e.g. this user is doing bad things, we asked them to stop but the connection didn't get dropped somewhere along the way). Normally, I would add a firewall to do the job, but this would take some time, and I was in an emergency situation. Killing the process that owns the connection is really a bad idea here because this would take down the server (all users would lose functionality when we just want to selectively and temporally drop this one connection).


当前回答

尝试Sysinternals/Microsoft的工具TCPView (GUI)和Tcpvcon(命令行)。 https://learn.microsoft.com/en-us/sysinternals/downloads/tcpview

其他回答

例如,您希望释放端口8080 然后,按照这些命令执行。

 netstat -ano
 taskkill /f /im [PID of the port 8080 got from previous command]

完成了!

如果你知道你想要释放的端口,你可以通过寻找特定的端口来排序netstat列表,就像这样:

netstat -ano | findstr :8080

然后pid会出现在右边,你可以用taskkill杀死它。

taskkill /pid 11704 /F

此外,你可能想看看这个问题,这是专门为localhost,但我认为它是相关的:

如果你知道你想要删除的特定端口,只需以admin的身份打开命令提示符(在windows上),然后:

NPX kill-port 1900

以上1900是我箱子的端口号。当我想关闭React-Native开发工具(和Expo)正在运行的端口时,我经常使用这个方法。原因是即使关闭了开发人员窗口或停止了服务器,端口仍然在使用中。

为了关闭该端口,您可以确定正在侦听该端口的进程并杀死该进程。

打开cmd 输入netstat -a -n -o 找到TCP [IP地址]:[端口号]....#[target_PID]# (UDP同上) (顺便说一句,杀死[target_PID]没有为我工作) CTRL+ALT+DELETE,选择“启动任务管理器” 单击“进程”选项卡 打开“PID”列,方法如下:查看>选择列>选中“PID”复选框 找到感兴趣的PID和“END PROCESS” 现在您可以在[IP地址]:[端口号]上重新运行服务器,没有任何问题