我正在尝试使用 lrzsz 通过读取 java 中的 stdio 并将其转发到已连接客户端的套接字来通过 zmodem 发送文件。
private void sendFiles(ArrayList<String> filenames) {
Process p;
ProcessBuilder pb;
filenames.add(0, "/opt/local/bin/sz");
try {
pb = new ProcessBuilder(filenames);
p = pb.start();
InputStreamReader lrzszin = new InputStreamReader(p.getInputStream());
OutputStreamWriter lrzszout = new OutputStreamWriter(p.getOutputStream());
InputStreamReader telnetin = new InputStreamReader(socket.getInputStream());
OutputStreamWriter telnetout = new OutputStreamWriter(socket.getOutputStream());
while (p.isAlive()) {
if (lrzszin.ready()) {
telnetout.write(lrzszin.read());
telnetout.flush();
}
if (telnetin.ready()) {
lrzszout.write(telnetin.read());
lrzszout.flush();
}
}
} catch (IOException ex) {
}
}
然而,zmodem 下载是通过损坏来的。它出错了。