udp 포트 전달자를 테스트하기 위해 netcat을 사용하고 있으며 대상에서 문자열을 프로그래밍 방식으로 읽을 수 없습니다 (netcat 수신기 하위 프로세스). 메시지가 청취자에게 올바르게 전달되었는지 확인하기 위해 netcat 리스너 서브 프로세스에서 읽을 올바른 스트림은 무엇입니까? 현재 청취자 하위 프로세스 'INPUT STREAM'에서 읽는 중입니다. 그러나이 작업을 수행하는 데 문제가 있습니다. 나는 Process.getInputStream()이 실제로 부모 프로세스의 입력 스트림이고 subprocess 'stdout에 해당한다고 읽었지만 아마도 이것은 잡기위한 잘못된 스트림 일까 ??Runtime.getRuntime(). exec (cmdLine)을 사용하여 실행 한 Java 프로그램에서 netcat 리스너 하위 프로세스의 표준 출력을 가져 오는 방법은 무엇입니까?
먼저 localhost : srcPort에 오는 모든 항목을 localhost : destPort로 전달하는 내 udp 포트 전달자 하위 프로세스를 시작합니다.
다음은 리스너 하위 프로세스의 오류 스트림에서 읽는 스레드와 입력 스트림에서 하나를 제외하고 두 개의 "드레 이닝"스레드와 함께 netcat 수신기를 시작합니다.
Process sendProcess = Runtime.getRuntime().exec("nc -vu <srcHost> <srcPort>");
을 그리고 마지막으로, 나는 통해 문자열을 보내 : 다음
Process recvProcess = Runtime.getRuntime().exec("nc -luv -p <destPort>");
나는 2 개 배수 스레드와 함께 포트 전달자에 문자열을 보낼 netcat을 보낸 사람을 시작
String sendString = String.format("hello%s", System.lineSeparator());
PrintWriter sendWriter = new PrintWriter(sendProcess.getOutputStream());
sendWriter.print(sendString);
sendWriter.flush();
대신 cmd 창에서 netcat 수신기를 실행하면 sendString이 콘솔에 올바르게 출력됩니다. 하지만 Java 프로그램에서 청취자의 inputStream 블록을 읽습니다. 다음은 실행이 내 청취자의 inputStream을 읽어 스레드의() 방법 :
BufferedReader in;
try {
in = new BufferedReader(new InputStreamReader(receiveMsgProcess.getInputStream()));
String receivedMsg;
while ((receivedMsg = in.readLine()) != null) {
System.out.println(String.format("RECV IN: %s", receivedMsg));
}
} catch (...) { ... }
나는 그것이 줄 바꿈 문제가 될 줄 알았는데, 그래서 또한 in.ready()와 in.read (버퍼, 0을 사용하여 시도, 1024) 메소드 대신에 in.readLine()을 사용합니다. 그들은 모두 차단합니다.
Runtime.getRuntime.exec("nc -luv -p <destPort> > recvMsg.txt");
을하지만이 중 어떤 파일이 생성되지 작동하지 않습니다
또한 파일로 내 청취자의 출력을 리디렉션하려고 노력했다.
제발, 난 그냥 netcat 및 java 프로세스 스트림에 대해 뭔가를 오해 해요 확신 해요. 제안이나 통찰력에 대해 미리 감사드립니다.
오류 스트림도 확인하십시오. 때로 프로세스가 두 프로세스 모두에게 보내고 표준 명령 프롬프트에서는 프로세스가 동일하게 보입니다. – Thomas
제안 해 주셔서 감사합니다 ...하지만 오류 스트림을 확인합니다. 오류 스트림에서 "수신 대기 중 [Any]", "[host] [host] "에 연결합니다. 하지만 sendString은 없습니다. –
cily
recvMsgProcess.getInputStream()이 올바른 스트림을 가져올 수 있는지 여부를 확인할 수 있습니까? – cily