후 소켓에서의 InputStream를 사용할 수 없습니다 클라이언트 측에서이 코드를 가지고 있습니다 :여기 상황이다 writeObject에
PrintWriter out = new PrintWriter(new BufferedOutputStream(socket.getOutputStream()),true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
/*
using in/out, no problems
*/
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
SomeObject so = (SomeObject)ois.readObject();
out.println("some text");
somebody를 보낼 때까지 모든 것이 정상입니다. 클라이언트는 객체를 올바르게 수신하지만 아무런 문제가 없습니다. 하지만 더 이상 소켓을 사용할 수 없습니다. oos.close()를 수행하면 "소켓이 닫혔다"는 Exception이 발생합니다. oos.reset()을 수행하면 비슷한 메시지와 함께 예외가 발생합니다. "소켓 재설정". 그래서 내가 무엇을해야하니? writeObject() 이후에 동일한 입출력 스트림을 사용할 수 있습니까?
"some text"를 보낼 때 나는 readLine()을 몇 번이나 호출했는지에 상관없이 null을 얻는다. 나는 결코 "some text"를 얻지 못한다.
그렇다면 동일한 소켓에도 Reader와 InputStream을 연결하면 안됩니까? 예 : 내가 문자열 "RECIEVE FILE"을 전달하여 서버에 메시지를 보내고 BufferedOutputStream을 사용하여 작은 바이너리 파일 또는 바이너리 정보를 나타내는 byte [] 배열을 전송합니다. 메시지를 보낸 후 플러시()하면 제대로 작동합니다. 그러나 가장 좋은 방법은 무엇입니까? – Marko