如何在 Ubuntu 中重新打开端口?

如何在 Ubuntu 中重新打开端口?

我的程序绑定了一个端口进行监听,在程序终止后,该端口大约有一段时间不可用,在此期间,任何再次打开同一端口进行监听的尝试都会失败。我需要等待一段时间才能重新打开端口。

我需要反复绑定端口,因为我需要反复重新测试我的服务器程序。是否有任何 Linux 命令可以提前释放端口,或者任何编程代码可以执行相同的操作?我用 C++ 编写代码并使用 gSOAP 框架。

基本上我将使用以下方式绑定端口

soap_bind(&newsoap, NULL, 13518, 100);

我绑定服务器来监听端口13518

Ubuntu 版本:11.10

我在 Windows 中尝试了相同的代码,程序终止后端口立即可用。在 Linux 中,我是否需要在程序终止前执行一些额外步骤来解除端口绑定?

答案1

您需要绑定重用地址套接字选项允许后续绑定成功. 就你的情况而言:

newsoap.bind_flags |= SO_REUSEADDR;
soap_bind(&newsoap, NULL, 13518, 100);

答案2

您必须关闭套接字。这是一项安全功能,开放的端口将被内核锁定一段时间。

我不知道你的框架,你必须查看它的文档以了解如何使用它关闭端口。我只使用直接内核调用来使用端口。

您可能需要阅读手册页socket bind listen和更多参考页面才能真正了解其工作原理。

相关内容