我正在用Java创建一个简单的客户端 - 服务器应用程序。这是我初始化侦听套接字的方式:
private void initSock() {
try {
sock = new ServerSocket(port);
} catch (IOException e) {
System.err.println("Could not listen on port: "+port+". Isn't the port already in use?");
System.exit(1);
}
}
当使用端口时,该方法会抛出可能有用的错误消息 - 但是:是否可以扩展信息,如下所示:
无法侦听端口
xx
,流程blahblah
正在使用pidxxx
。
Java(和Windows,以及最终其他系统)是否允许我获取该信息?
我可以使用命令行找到这个信息,但这不是我现在想要的。
答案 0 :(得分:0)
我无法满足您的要求,但在代码之下可以为您提供更多信息:
public class NetStat
{
public static void main(String [] args) throws IOException
{
BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter port number :");
String port =br.readLine();
StringBuffer output = new StringBuffer();
Process p = Runtime.getRuntime().exec("netstat -an");
BufferedReader reader =
new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
while ((line = reader.readLine())!= null) {
if(line.contains(port))
{
output.append(line + "\n");
}
}
System.out.println(output.toString());
}
}
Input: 50773
Output: TCP 1xx.xxx.xxx.xxx:50773 xxx.xxx.xxx.xxx:8080 ESTABLISHED