返回信息流任务需求简述:用java读取远程的进程信息并返回。
获取进程信息代码:
// 创建系统进程
ProcessBuilder pb = new ProcessBuilder("tasklist");
Process p = pb.start();
BufferedReader out = new BufferedReader(new InputStreamReader(new BufferedInputStream(p.getInputStream()), Charset.forName("GB2312")));
System.out.println("Window 系统进程列表");
String ostr;
//一行一行的读取进程信息,并输出
while ((ostr = out.readLine()) != null){
System.out.println(ostr);
}
现在的问题:
我想把远程电脑的进程信息表通过socket直接传给我本地,但是整个传过来我不知道怎么搞。
现在的方法是一行一行读进程信息,因为每一行都是string格式就能用printwriter写到socket的outputstreasm了。读一行传一行。但是整个的进程表就不知道怎么传送过来了。
请各位给点建议。
这是一条镜像帖。来源:北邮人论坛 / java / #57448同步于 2017/9/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
help,如何将一个inputstream转换成Socket的outputstream
z231235
2017/9/11镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
【 在 z231235 的大作中提到: 】
: 任务需求简述:用java读取远程的进程信息并返回。
: 获取进程信息代码:
: // 创建系统进程
: ...................
先把进程表的每一行string拼接到一起,再传socket吧。
【 在 z231235 的大作中提到: 】
: 任务需求简述:用java读取远程的进程信息并返回。
: 获取进程信息代码:
: // 创建系统进程
: ...................
```java
List<String> process = ProcessHandle
.allProcesses()
.map(processHandle -> processHandle.info().commandLine())
.flatMap(Optional::stream)
.collect(Collectors.toList());
//...init clientSocket
OutputStream outputStream = clientSocket.getOutputStream();
//use jackson to serialization
outputStream.write(new ObjectMapper().writeValueAsBytes(process));
```
谢谢大神
【 在 flymop 的大作中提到: 】
: [md]
: ```java
: List<String> process = ProcessHandle
: ...................
https://commons.apache.org/proper/commons-io/javadocs/api-2.5/org/apache/commons/io/IOUtils.html#copy(java.io.InputStream,%20java.io.OutputStream)