Windows 上的 JAVA IPC

标签 java windows ipc named-pipes mplayer

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

我尝试使用这个项目在 Java 中打开 IPC CLIPC 但是,我的代码在 fifo.openWriter() 中卡住了;行

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

我尝试在 Java 中创建一个等待连接的小型服务器套接字 并将视频文件内容作为原始数据发送, 但我不知道如何告诉 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 命名管道非常等同于套接字的使用,以至于人们很容易想改用套接字。

关于Windows 上的 JAVA IPC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3704252/

相关文章:

java - SWT shell 及其子 shell 的处理顺序是什么?

java - 为什么这个 JPanel 不可见?

ios - iOS 应用程序可以通过套接字进行通信吗?

java - 如何在Java中使用bitshift切换整数标志?

java - ElasticBeanstalk Java, Spring Activity 配置文件

c++ - 在 ISimpleAudioVolume 的 IAudioSessionControl 上使用 QueryInterface 无法编译

windows - 如何让 ssh 在 WINDOWS 上从标准输入接收密码

windows - 为什么 OSQuery 在读取 Windows EventLogs 时不包含 "Computer"事件信息?

linux - 如何更改与 stdin 文件描述符关联的 fd?

linux - Golang、进程和共享内存