首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查端口是否可用

问如何检查端口是否可用
EN

Stack Overflow用户
提问于 2009-11-18 21:48:22
回答 3查看 1.8K关注 0票数 2

Linux (内核2.6.20)上是否有API函数可用于检查给定的TCP/IP端口是否已使用-绑定和/或连接?

bind()是唯一的解决方案(使用带SO_REUSEADDR选项的套接字绑定到给定端口,然后将其关闭)吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-11-18 22:10:11

嗯,

根据strace -o trace.out netstat -at的说法

netstat通过查看以下内容来实现此目的

代码语言:javascript
复制
/proc/net/tcp

和

代码语言:javascript
复制
/proc/net/tcp6

使用的端口是该文件中条目的第二个字段中的十六进制。

您可以通过查看第4个字段来获取连接的状态,例如0A为LISTEN,01为ESTABLISHED。

票数 2
EN

Stack Overflow用户

发布于 2009-11-18 22:18:47

神圣的可移植BSD套接字API不允许您在尝试分配端口之前知道该端口是否正在使用。我知道这有多诱人,我以前也遇到过这种情况。但是,任何表面上聪明的方法(例如proc文件系统)都容易出现细微的错误、将来的兼容性问题、竞争条件等等。

票数 1
EN

Stack Overflow用户

发布于 2009-11-18 21:51:07

获取netstat命令的源代码,看看它是如何显示的。然而,你永远都会有一场比赛。此外,SO_REUSEADDR不允许您使用其他人正在使用的端口,当然,只允许使用处于关闭等待状态的端口。

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

https://stackoverflow.com/questions/1756107

复制
相关文章

相似问题

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