2013-02-26 89 views
1

在命令提示符下,我可以运行netstat查看单个端口已在使用的机器是这样的:如何做一个netstat来查看一个端口是否在C++中使用?

netstat -nap | grep <port-num> 

++我可以调用什么功能,用C在Linux上,只是看是否特定港口目前正在使用或没有?我宁愿不做系统调用netstat本身。

+0

http://stackoverflow.com/questions/1756107/how-to-check-if-port-is-available – congusbongus 2013-02-26 00:59:19

回答

3

如果你这样做:

strace netstat -nap 

可以推断出netstat的是做来获得这些信息。

例如:

open directory: openat(AT_FDCWD, "/proc/2073/fd", ...) = 4) 
get entries: getdents(4, /* 15 entries */, 32768) = 360 
read symbolic links: readlink("/proc/2073/fd/4", "socket:[48395]", 29) = 14 
that one was a socket connected on port 48395 
+0

我不知道如何strace的是C++函数打电话? – WilliamKF 2013-02-26 01:40:50

+1

这是特定于操作系统的内容,您不需要调用C++函数。您将需要基本上使用特定于操作系统的一组库。 strace命令在Linux上为您提供系统调用。这同样不适用于Windows,如果你想得到结果,你需要使用另一个分析器(比如在Solaris上的truss)。但是,以上是在Linux上进行探索的最佳方式。 顺便说一句,如果你想复制'netstat -nap'的行为,你需要使用系统调用'openat','getdents'和'readlink'。 – user1952500 2013-02-26 01:55:23

相关问题