java에서 프로세스 - 소켓 스트림을 연결해주고싶습니다.
글쓴이: jaykee33 / 작성시간: 수, 2017/02/08 - 1:11오전
제가 원하는 형태는
클라이언트가 서버에 접속하고,
서버에 있는 콘솔 프로그램을 실행해서 결과를 소켓을 통해 받고,
프로그램에 필요한 인풋값을 클라이언트에서 소켓을 통해 넣어주고 싶습니다.
간단하게 생각했을땐, 그냥 프로세스 스트림과 네트워크 스트림을 연결시켜버리는걸 생각했는데,
스트림끼리 한방에 리다이렉션 시켜버리는 함수는 없는거같네요??
그래서 에코서버 예제를 이용해서 단순하게
writer=new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
reader=new BufferedReader(new InputStreamReader(ps.getInputStream()));
String msg=reader.readLine();
여기서 msg에 프로세스 출력값이 정상적으로 넘어오는걸 디버거로 확인했습니다.
근데
writer.println(msg);
이녀석을 호출해도 클라이언트에는 아무것도 찍히지 않네요;;
물론 에코서버 정상적으로 되던 코드에서 단지 writer를 통해서 전송하는 문자열만 바꿨을 뿐인데
왜 이러는거죠;;
Forums:
writer.println(msg); 로 찾아보니.
예제소스중에...
writer.flush() 함수가 있네요?
그냥 책 예제소스 보시면 편합니다.
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
이부분 소스는
reader=new BufferedReader(new InputStreamReader(ps.getInputStream()));
writer=new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
while((msg=reader.readLine())!=null){
writer.println(msg);
writer.flush();
}
이렇게 해놧거든요 ㅠ reader를 단순하게 소켓 인풋으로 바꾸면 에코서버로 동작하는데 뭐가문제인지ㅠㅠ
걍. 되는 예제 따라해보세요.
원인도 보일겁니다.
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
댓글 달기