Tag:

ProcessBuilder重定向到标准输出

我想将java进程输出重定向到父java进程的标准输出。 使用ProcessBuilder类如下: public static void main(String[] args) { ProcessBuilder processBuilder = new ProcessBuilder(“cmd”); processBuilder.directory(new File(“C:”)); processBuilder.redirectErrorStream(true); // redirect error stream to output stream processBuilder.redirectOutput(ProcessBuilder.Redirect.INHERIT); } 我原以为“cmd”的输出,如: Microsoft Windows [版本6.1.7601]版权所有(c)2009 Microsoft Corporation。 Tousdroitsréservés。 显示在用于运行java程序的DOS控制台中。 但是在DOS控制台中根本没有显示任何内容。 在讨论的其他主题中,我看到了使用BufferedReader类的解决方案:但是在这里我希望过程的输出直接显示在标准输出中,而不使用任何BufferedReader或“while read loop”。 可能吗? 谢谢。

如何限制从Socket通过ObjectInputStream读取的最大大小?

有没有办法限制从java中的ObjectInputStream读取的最大缓冲区大小? 如果很明显有问题的对象是恶意巨大的,那么我想停止反序列化。 当然,有ObjectInputStream.read(byte [] buf,int off,int len),但我不想受到分配的性能损失,比如byte [1000000]。 我在这里错过了什么吗?

如何在java中通过UDP发送音频流?

我有一个问题,我已将MediaLocator设置为麦克风输入,然后创建了播放器。 我需要从麦克风中获取声音,将其编码为较低质量的流,然后通过UDP将其作为数据报包发送。 这是代码,我在网上找到了大部分代码,并将其改编为我的应用: public class AudioSender extends Thread { private MediaLocator ml = new MediaLocator(“javasound://44100”); private DatagramSocket socket; private boolean transmitting; private Player player; TargetDataLine mic; byte[] buffer; private AudioFormat format; private DatagramSocket datagramSocket(){ try { return new DatagramSocket(); } catch (SocketException ex) { return null; } } private void startMic() { try { format […]

Xuggler和现场直播

我们目前正在忙于一个项目,我们正在尝试在Java的实时流中在窗口中播放video文件。 我们已经设法使用InputStreamReader通过Socket对象捕获流。 下一步是使用现有的库(Xuggler)或代码来解码此流并在一个简单的窗口中显示内容(video)。 该流源自Parrot AR Drone 2.0,IP地址为192.168.1.1:5555。 这就是我们陷入困境的地方。 我们尝试使用的代码是这里找到的DecodeandPlayVideo示例: https://github.com/xuggle/xuggle-xuggler/blob/master/src/com/xuggle/xuggler/demos/DecodeAndPlayVideo.java 现在应该可以将它与输入流一起使用,但它当然应该是正确的格式。 有什么方法可以帮助我们这样做吗?

在客户端JAVA中调用socket.close()时,套接字未关闭服务器端

我在java中遇到套接字问题。 我有一个正在使用accept()监听的ServerSocket ,并为每个客户端请求生成线程。 客户端和服务器之间的通信正常。 我正在使用输入流从serverthreads中的客户端读取数据,例如: inputStream = mySocket.getInputStream(); bytes = inputStream.read(buffer); 我的问题是,如果我从客户端调用socket.close(),则对bytes = inputStream.read(buffer);的阻塞调用没有任何反应bytes = inputStream.read(buffer); ,它继续阻止。 但是如果我从服务器关闭套接字,然后是inputStream.read(buffer);它就有效inputStream.read(buffer); 客户端返回“-1”。 SERVER-MAINTHREAD: //SERVER MAIN THREAD, SPAWNS CLIENT THREADS ServerSocket serverSocket = new ServerSocket(SERVERPORT); while (listening){ new ServerThread(serverSocket.accept(), monitor).start(); } SERVER-CLIENTTHREADS: public class ServerThread extends Thread{ public ServerThread(Socket socket, Monitor monitor) { this.socket = socket; this.monitor = monitor; […]

蓝牙连接; 无法正确发送字符串

当我需要将服务器蓝牙插槽中的字符串发送到我的客户端蓝牙插槽时,我的程序会遇到麻烦。 一切正常,只要我一次只发送一个字符串(例如聊天)但如果我需要在短时间内编写更多的字符串(以交换信息),字符串将不会从客户端代码中分离出来。 例如,如果我发送“FirstUser”并且在“SecondUser”之后,客户端不会读取“FirstUser”,然后读取“SecondUser”。 它将显示“FirstUserSecondUser”。 我怎样才能避免这种行为? 编辑:如果我让线程在能够发送新消息之前进入hibernate状态,它会读取正确的字符串,但是这个解决方案并不适合我的需要。 服务器代码:发送给所有客户端(已编辑) public synchronized void sendToAll(String message) { try { Thread.sleep(100); } catch (InterruptedException e1) { e1.printStackTrace(); } publishProgress(message); for(OutputStream writer:outputList) { try { writer.write(message.getBytes()); writer.flush(); } catch (IOException e) { System.out.println(“Some-Error-Code”); } } } 服务器代码:从客户端读取: public void run() { String nachricht; int numRead; byte[] buffer = new byte[1024]; while […]

如何创建受约束的InputStream以仅读取文件的一部分?

我想创建一个限制在文件中某个字节范围的InputStream,例如从位置0到100的字节。这样客户端代码应该在达到第100个字节时看到EOF。

Java无效流头问题

我写了一个客户端 – 服务器应用程序,现在我面临一个我不知道如何解决的问题: 这是客户: try { Socket socket = new Socket(ip, port); ObjectOutputStream ooos = new ObjectOutputStream(socket .getOutputStream()); SendMessage message = new SendMessage(); message.numDoc = value.numDoc; message.docFreq = value.docFreq; message.queryTerms = query; message.startIndex = startIndex; message.count = count; message.multiple = false; message.ips = null; message.ports = null; message.value = true; message.docFreq = value.docFreq; message.numDoc = […]

检测流是否使用Java压缩的最佳方法

找出java.io.InputStream包含压缩数据的最佳方法是什么?

使用Java混音(不使用混音器API)

我试图混合几个不同的音频流,并尝试让它们同时播放, 而不是一次一个。 下面的代码一次一个地播放它们,我无法找出不使用Java Mixer API的解决方案。 不幸的是,我的声卡不支持使用Mixer API进行同步,我不得不想办法通过代码来实现。 请指教。 /////代码如下//// class MixerProgram { public static AudioFormat monoFormat; private JFileChooser fileChooser = new JFileChooser(); private static File[] files; private int trackCount; private FileInputStream[] fileStreams = new FileInputStream[trackCount]; public static AudioInputStream[] audioInputStream; private Thread trackThread[] = new Thread[trackCount]; private static DataLine.Info sourceDataLineInfo = null; private static SourceDataLine[] sourceLine; […]