终止现有的tcp连接

时间:2010-06-23 05:21:54

标签: c++

有没有办法杀掉现有的连接?

例如,192.168.1.120通过端口8080连接。

我想知道如何终止该连接?

非常感谢!

2 个答案:

答案 0 :(得分:2)

最简单的方法(没有外部软件)是杀死和/或重启正在观看该端口的进程。但是,这会扼杀该进程使用的每个连接,因此这不是您通常想要在服务器上执行的操作。

要找出哪个进程正在处理您的连接,您可以在Linux中说netstat -anp,或在Windows中说netstat -anb。请注意,在Windows中,netstat在从套接字回溯到进程时可能会非常慢。

如果您使用的是Windows,并且不介意下载某些内容,请查看SysInternals的TCPView。让您了解哪些端口是打开的,以及使用它们的是什么。它甚至可以杀死连接,IIRC,虽然我忘记了它是通过简单地重置连接还是通过使用它来终止进程。

答案 1 :(得分:0)

由于此问题被标记为C ++(并且我有相同的问题),因此我认为OP希望使用Windows API的示例。我使用GetTcpTable2SetTcpEntry API来完成此操作。您需要调用GetTcpTable2并将结果过滤到要终止的连接,然后将其传递到SetTcpEntry。请注意,我在为GetTcpTable2分配内存时采取了一些捷径,因此,如果您要编写生产代码,则需要阅读Microsoft文档,以了解如何最佳地正确使用API​​。

可以随意使用我根据MIT许可证在Github上编写和发布的代码: