繁体   English   中英

Windows上的JAVA IPC

[英]JAVA IPC on Windows

我想使用Java打开一个命名管道,并将该存档的内容(rar / zip / etc ..)提取到一个命名管道,然后在该管道的位置运行Mplayer并播放电影。

我试图使用该项目CLIPC在Java中打开IPC,但是我的代码在fifo.openWriter()中冻结了; 线

 FIFO fifo = new FIFO("jtpc_fifo");
 fifo.create();
 fifo.openWriter();

我尝试过用Java创建一个小型服务器Socket,以等待连接并将视频文件内容作为原始数据发送,但是我不知道如何告诉mplayer通过网络获取原始数据。

我想使用管道,因为我认为它是最好的解决方案,无需处理任何物理和大文件,其易变且最灵活

这就是我现在正在尝试使用套接字,但是java服务器套接字仅在mplayer超时失败后才接受连接


mplayer http://localhost:5555/file.raw

 try{


  String file = "D:\\tmp\\lie.to.me.201.the.core.of.it-sitv.mkv";

  ServerSocket socket = new ServerSocket(5555);
  System.out.println("UnrarTest.main() START");
  Socket s = socket.accept();
  System.out.println("UnrarTest.main() ACCEPT");


  final InputStream sin = s.getInputStream();
  new Thread(){
    public void run(){
      try{
        while(true){
          if(sin.available() > 0){
            int read = sin.read();
            System.out.println((char)read);
          }
        }
      }catch(Exception ee){
        ee.printStackTrace();
      }
    }
  }.start();


  final OutputStream sout = s.getOutputStream();
  final FileInputStream fin = new FileInputStream(file);
  new Thread(){
    public void run(){
      try{
        while(fin.available() > 0){
          int in = fin.read();
          System.err.println(in);
          sout.write(in);
        }
      }catch(Exception ee){
        ee.printStackTrace();
      }

    }
  }.start();

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

Windows“命名管道”绝对与POSIX命名管道无关,尽管它们具有名称。

Windows命名管道以客户端/服务器构造实现。 服务器“创建”管道,客户端与创建服务器的联系人联系。 如果服务器“死亡”,...管道将自动销毁,而基于文件系统的POSIX命名管道则允许在文件系统上进行中间存储。

Windows命名管道与套接字使用等价,因此很容易诱使您使用套接字。

我不确定Win32平台上的CLIPC(或Win32本身)对管道的支持程度。 为了节省您的时间,请使用套接字,Java / Win32上支持它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM