내 교수로부터 다음과 같은 정보를 바탕으로 :Java 네트워크 프로그래밍에서 객체 스트림의 초기화 순서가 중요한 이유는 무엇입니까?
는클라이언트는 ObjectOutputStream
와 ObjectInputStream
객체 요청을 전송하고, 응답을받을를 작성합니다. CalculateClient
생성자는 : 네트워크 애플리케이션에서
public CalculateClient(String host, int port)
throws IOException
{
/* determine the address of the server and connect to it */
serverHost = InetAddress.getByName(host);
serverPort = port;
calculate = new Socket(serverHost, serverPort);
OutputStream out = calculate.getOutputStream();
request = new ObjectOutputStream(
new BufferedOutputStream(out));
request.flush();
// ObjectInputStream blocks until
// the connected side flushes its ObjectOutputStream
InputStream in = calculate.getInputStream();
reply = new ObjectInputStream(in);
}
는 오브젝트를 사용하여 입력 스트림 및 출력 스트림 소켓의 구성 순서가 중요하다. ObjectOutputStream
을 먼저 만들어야합니다. 그런 다음 물을 버려야합니다. 그런 다음 ObjectInputStream
을 만들 수 있습니다.
그는 이유에 대해 자세히 설명하지 않습니다. 왜 이것이 사실입니까?
다음 javadoc을 읽습니다. http://docs.oracle.com/javase/7/docs/api/java/io/ObjectInputStream.html#ObjectInputStream%28java.io.InputStream%29 –