【发布时间】:2023-09-27 07:21:01
【问题描述】:
我正在制作一个简单的 Java 套接字程序,可以将文本从一台计算机发送到另一台计算机。
代码:
Scanner scan = new Scanner(System.in);
System.out.println("Starting Server...");
ServerSocket server = new ServerSocket(7777);
程序在上面代码示例的第 3 行将套接字绑定到端口 7777。 但是,此程序有时会返回 BindException。为了解决这个问题,我在绑定发生之前添加了这行代码:
Runtime.getRuntime().exec("lsof -t -i:7777 | xargs kill");
总之:
Scanner scan = new Scanner(System.in);
System.out.println("Starting Server...");
Runtime.getRuntime().exec("lsof -t -i:7777 | xargs kill");
ServerSocket server = new ServerSocket(7777);
这应该运行 shell 命令来杀死在端口 7777 上运行的所有进程。 但是,事实并非如此。如果在 Terminal.app 中键入相同的命令,它可以工作,并且如果我使用与上述示例的第 4 行相同的语法并使用不同的命令,例如“say hello”,那么该命令可以工作,但不是 kill 那个。
所以,
为什么该命令不执行?
谢谢。
【问题讨论】:
-
为什么投反对票?有什么我可以改变的吗?