首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Java中,能否找到UNIX系统中已知PID所使用的端口号?

在Java中,能否找到UNIX系统中已知PID所使用的端口号?
EN

Stack Overflow用户
提问于 2017-05-23 05:30:46
回答 1查看 418关注 0票数 2

我试图在Java中实现最好的代码/类,通过在Unix系统(即Linux、Solaris和AIX )中提供一个已知的进程号(PID)来捕获端口号。我查看了Socket类,但它似乎不支持这个解决方案?

有谁知道找到这个解决方案的更好方法吗?

EN

Stack Overflow用户

回答已采纳

发布于 2017-05-23 06:16:27

您可以使用Runtime.getRuntime().exec

例如,融合代码展示了如何使用PID获取进程的tcp套接字。

2046

代码语言:javascript
运行
复制
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Process p=null;
    StringBuffer output = new StringBuffer();
    String command= "netstat  -p ";
    try{
        p = Runtime.getRuntime().exec(command);
        p.waitFor();
        BufferedReader reader =
                        new BufferedReader(new InputStreamReader(p.getInputStream()));

                    String line = "";
        while ((line = reader.readLine())!= null) {
            if(line.matches("^tcp.*2406.*"))
            output.append(line + "\n");

            //reader.close();
        }

    } catch (Exception e) {
        e.printStackTrace();
    }

     System.out.println(output);
}

在我的系统中这个输出是

代码语言:javascript
运行
复制
tcp        0      0 192.168.2.239:52956     sc-in-f188.1e100.n:5228 ESTABLISHED 2406/chrome

我们知道这里的套接字是52956,您可以进一步解析用于查找套接字的字符串

请参阅

如何执行shell命令从java

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44126505

复制
相关文章

相似问题

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