클라이언트와 서버간에 개체가 튀는 데 문제가 있습니다.클라이언트 서버 통신 문제가 발생했습니다.
개체를 만듭니다. 일부 필드를 업데이트하십시오. 서버로 보내기.
SomeObject thisObject = new SomeObject();
thisObject.setSomeValue(13); // update object to be sent
PrintStream toServer = new PrintStream(sock.getOutputStream());
ObjectOutputStream oos = new ObjectOutputStream(toServer);
oos.writeObject(thisObject);
oos.close();
toServer.println(oos); // send object to server
toServer.flush();
오른쪽이 후 (이 부분 작품), 더 서버는 어떤 값을 업데이트 1919로 설정;
ObjectInputStream objFromClient = new ObjectInputStream(new BufferedInputStream(
sock.getInputStream()));
Served thisObject = (Served) objFromClient.readObject();
thisObject.setSomeValue(1919);
서버는 클라이언트
toClient = new PrintStream(sock.getOutputStream());
ObjectOutputStream oos = new ObjectOutputStream(toClient);
oos.writeObject(thisObject);
oos.close();
objFromClient.close();
sock.close();
다시 객체를 전송하지만 시간이 다시 클라이언트 측에서 .. 프로그램 객체를 데리러 올 때 소켓 휴일을 제외하고 실패
ObjectInputStream objFromServer = new ObjectInputStream(
new BufferedInputStream(sock.getInputStream())); //java.net.SocketException: Socket is closed
thisObject = (Served) objFromServer.readObject();
....
문제를 이해하는 데 도움이되도록
'소켓'을 생성하는 코드를 보여줄 수 있습니까? –
'Socket sock = new Socket (serverName, SERVER_PORT);와 같이 간단하다. – JAM
이것은 아마도 문제는 아니지만 그래도 왜'oos.writeObject (thisObject); oos.close(); ' 및 'toServer.println (oos); toServer.flush();'첫 번째 단계에서? 첫 번째 쌍이 필요하지 않니? 'PrintStream.println()'은 파라미터로서'ObjectOutputStream'을 받아 들일 수 있습니까? –