JAVA进程A
JAVA进程B,占用的端口为5050
A和B都是通过CMD方式运行的,在WINDOWS的进程管理器看到的进程名都是cmd.exeA怎样杀掉B,而保证A继续正常运行?

解决方案 »

  1.   

    在命令行里面输入命令netstat -abn,找到占用5050端口的进程,记录下它的PID,然后打开你的任务管理器,在菜单的“查看——选择列”项里勾选PID项,然后找到对应的进程关掉就行了
      

  2.   


    大哥
    是用JAVA程序来完成
      

  3.   

    B进程socket这样定义:Socket socket = new Socket();
    socket.setResuseAddress(true);//这样可以是其他的程序可以立即重用该端口
    SocketAddress addr = new InetSocketAddress("localhost",5050);
    socket.connect(addre);然后再A进程关掉B线程的socket,这样就可以重用该端口了。
      

  4.   

    那没什么好办法,同样是进程,两台虚拟机,你有什么权力杀掉别的进程,调用shell命令也很困难,而且你两个进程又同名
      

  5.   

    用 java.lang.Runtime.exec() 运行dos命令.1. netstat -abn 找出占端口的程序.
    2. TSKILL processid 杀掉进程.
    这样就不OK了....
      

  6.   

    楼上的方法正确 
    一般java进程都 是java.exe吧, 还有cmd.exe?
      

  7.   

    netstat -abn 是查看所有的
    怎样通过netstat查看6060端口的PID?
      

  8.   

    这样不行,netstat -abn命令每次执行的时候列出很多信息,而且根据你的网络情况不同列出的信息也不一样,要这样做你还得让你的程序分析netstat命令的执行结果或者你改一下命令参数,用netstat -bon,这个命令的执行结果好像好分析一些
      

  9.   

    不知道你的程序的具体情况,不过一个进程要直接杀掉另一个进程似乎有点难。不知是否可以这样实现:
    A进程发送一个消息给B(如要求B关闭),进程B接收到消息后做相应的动作(如B自己退出)
      

  10.   

    进程管理属于系统级别的权力,虚拟机只有调用系统的进程管理
    cmd比较好用
      

  11.   

    public static void main(String[] args) throws Exception {
    java.lang.Runtime.getRuntime().exec("tskill Explorer");
    }
      

  12.   

    建议使用jni百度一下,应该有的。