클라이언트 코드 :ObjectOutputStream에 전송되지 않은 데이터
try {
Socket socket = new Socket(ip, port);
OutputStream output = socket.getOutputStream();
ObjectOutputStream out = new ObjectOutputStream(output);
InputStream input = socket.getInputStream();
ObjectInputStream in = new ObjectInputStream(input);
out.writeByte(1);
FileHandler fh = (FileHandler) in.readObject();
//processing stuff
out.flush();
out.close();
output.flush();
output.close();
input.close();
in.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
서버 코드 :
는 try {
ServerSocket server = new ServerSocket(port);
Socket socket = server.accept();
InputStream input = socket.getInputStream();
ObjectInputStream in = new ObjectInputStream(input);
int type = in.readByte();
//processing stuff (which includes closing the streams and sending FileHandler object)
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
서버가 바이트를 수신하지 않습니다. 그것은 단지 클라이언트로부터의 바이트를 기다리고, 결코 오지 않는다. 나는 그것이 왜 보내지 않거나받는 지 모르겠습니다. 어떤 도움이라도 대단히 감사합니다.
또한 출력을 플러시하거나 닫지 마십시오. close, close 또는 close를 호출하는 OutputStream를 랩하면 (자), 포함 된 스트림을 플래시합니다. 출력 또는 입력에 대한 참조를 저장할 필요가 없습니다. 예외는 던져 질 때까지도 finally 절에 놓아야합니다. 여전히 스트림의 close()가 발생하는지 확인해야합니다. – chubbsondubs
바이트를 보낸 후 플러시 할 때 서버에서 연결 재설정 오류가 발생합니다. – Stripies
@ JonMannerberg - 아니요, 연결을 닫을 때 가져옵니다. 읽고 쓰기를 마칠 때까지 문을 닫지 마십시오. –