Tag:

Android(Java)中MediaRecorder的LocalSocket(Unix域)客户端 – 服务器数据流问题

我没有得到的是Unix域套接字之间的数据流。 我理解Unix Domain Socket的数据流是 LocalSocket client .connect() – > LocalServerSocket server .accept() 客户端将数据发送到服务器,直到我理解。 然而,对于来自Android的MediaRecorder的流式video/音频,经过大量研究后,我看到每个使用LocalSocket代替MediaRecorder文件的例子原则如下: https://static.foxdogstudios.com/static/presentations/keeping-it-real-time.html#/9 LocalServerSocket server = new LocalServerSocket(“some name”); receiver = new LocalSocket(); receiver.connect(server.getLocalSocketAddress()); LocalSocket sender = server.accept();//LocalSocket not LocalServerSocket as in Source link // … // Give the MediaRecorder our fake file recorder.setOutputFile(sender.getFileDescriptor()); 此代码如下所示: MediaRecorder – > LocalSocket sender – > LocalServerSocket […]

为什么使用Java套接字从未到达输入流的末尾?

我正在用Java编写一个简单的代理。 我无法将整个给定请求读入字节数组。 具体来说,在下面的循环中,即使客户端已经发送了它将要发送的所有数据(即,永远不会到达流的末尾),对“读取”的调用也会阻塞。 因为我不能确定是时候开始写输出直到我读完整个输入,这会造成一些麻烦。 如果我终止与服务器的连接,最终会到达流的末尾,一切都顺利完成(来自客户端的所有数据,在这种情况下,Firefox请求www.google.com,已被服务器读取) ,它可以根据需要处理它,但显然它不能发回任何东西给客户端)。 public static void copyStream(InputStream is, OutputStream os) throws IOException { int read = 0; byte[] buffer = new byte[BUFFER_SIZE]; while((read = is.read(buffer, 0, BUFFER_SIZE)) != -1) { os.write(buffer, 0, read); } return; } InputStream直接来自客户端套接字(getInputStream(),然后缓冲); OutputStream是ByteArrayOutputStream。 我究竟做错了什么?

导入Textfile并在Java中逐行读取

我想知道如何导入文本文件。 我想导入一个文件,然后逐行读取。 谢谢!

用于Java的增量流式JSON库

任何人都可以推荐一个Java的JSON库,它允许我以非阻塞的方式提供数据块吗? 我已经阅读了一个更好的Java JSON库和类似的问题,并没有找到我想要的。 基本上,我想要的是一个库,它允许我做类似以下的事情: String jsonString1 = “{ \”A broken”; String jsonString2 = ” json object\” : true }”; JSONParser p = new JSONParser(…); p.parse(jsonString1); p.isComplete(); // returns false p.parse(jsonString2); p.isComplete(); // returns true Object o = p.getResult(); 请注意,实际的键名称(“A broken json object”)在各段之间分开。 我发现的最接近的是async-json-library , 几乎完全符合我的要求,除了它无法恢复实际字符串或其他数据值在片段之间分割的对象。

命令行解释器如何工作?

我一直认为操作系统上的进程有三个标准流: stdin, stdout, and stderr 。 我还认为像vim这样的文本编辑通过stdin并在stdout发送ANSI转义字符来工作。 但是,我对命令行解释器如何在这一案例中没有提到的观点如下: 当我运行命令C:\cygwin\bin\bash.exe ,系统会提示我: Microsoft Windows [Version 6.1.7600] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:\Users\masson>C:\cygwin\bin\bash.exe bash-3.2$ …但是当我使用以下代码段在Java中运行它时,stdin流为空: ProcessBuilder pb = new ProcessBuilder(“C:\\cygwin\\bin\\bash.exe”); pb.redirectErrorStream(true); Process proc = pb.start(); final InputStream in = proc.getInputStream(); new Thread(new Runnable() { public void run() { // Blocks forever… in.read(new byte[1024]); } }).start(); […]

Java中的Apache HttpClient,instream.toString = org.apache.http.conn.EofSensorInputStream

我正在使用Apache HttpClient获取一个页面,我想将服务器回复的http主体存储到一个字符串中,这样我就可以操作这个字符串并将其打印到控制台。 不幸的是,在运行此方法时,我收到此消息: 17:52:01,862 INFO Driver:53 – fetchPage STARTING 17:52:07,580 INFO Driver:73 – fetchPage ENDING, took 5716 org.apache.http.conn.EofSensorInputStream@5e0eb724 fetchPage类: public String fetchPage(String part){ log.info(“fetchPage STARTING”); long start = System.currentTimeMillis(); String reply; String searchurl = URL + URL_SEARCH_BASE + part + URL_SEARCH_TAIL; HttpClient httpclient = new DefaultHttpClient(); HttpGet httpget = new HttpGet(searchurl); HttpResponse response; try { […]

FileInputStream和FileOutputStream到同一个文件:read()是否保证看到所有write()s“之前发生过”?

我使用文件作为大数据的缓存。 一个线程按顺序写入,另一个线程按顺序读取它。 我是否可以确定在一个线程中write()所有数据(通过write() )可以从另一个线程read() ,假设在Java内存模型方面存在适当的“先发生”关系? 这种行为是否有记录? 编辑 :在我的JDK中, FileOutputStream不会覆盖flush() ,并且OutputStream.flush()为空。 这就是我想知道的原因…… 编辑^ 2 :有问题的流程完全由我完全控制的类所拥有。 保证每个流只能由一个线程访问。 我的测试显示它按预期工作,但我仍然想知道这是否有保证和记录。 另见此相关讨论: http : //chat.stackoverflow.com/rooms/17598/discussion-between-hussain-al-mutawa-and-user946850

如何在写入文件时压缩文件?

有没有人知道如何压缩你写的流? 我试图避免将文件写入磁盘,并且想知道我是否可以在将数据写入流时压缩数据。 这背后的用例是原始文件将非常大,我们希望避免将整个解压缩到磁盘上。

Java process.getInputStream()无需读取,死锁子

我遇到了一些进程包装的问题,它只发生在Windows XP中。 这段代码在Windows 7中完美运行。我真的很难过为什么XP中的流是空的。 我也尝试使用Process.Exec()的String []版本,但它没有任何区别。 我正在使用以下类从进程’STDOUT和STDERR(每个流的一个实例)中读取: import java.util.*; import java.io.*; public class ThreadedStreamReader extends Thread{ InputStream in; Queue messageQueue; public ThreadedStreamReader(InputStream s, Queue q) { in = s; messageQueue = q; } public void run() { try { BufferedReader r = new BufferedReader(new InputStreamReader(in)); String line = null; while((line = r.readLine()) != null) { […]

在Java中部署流

在C#中,我几乎总是在using流对象时使用using模式。 例如: using (Stream stream = new MemoryStream()) { // do stuff } 通过使用using块,我们确保在代码块执行后立即在流上调用dispose。 我知道Java没有相应的using关键字,但我的问题是,当使用Java中的FileOutputStream类的对象时,我们是否需要进行任何内务管理以确保它被处理掉? 我正在看这个代码示例,我注意到他们没有做任何事情。 我只是想知道Java处理流的最佳实践是什么,或者它是否足以让垃圾收集器处理它。