1
서버에서 일부 이미지 파일을 읽고 소켓 프로그래밍을 사용하려고합니다.파일을 사용할 수 없을 때 InputStream throw SocketTimeOutException을 읽을 때
하지만 파일이 없으면 socketTimeOut 예외가 발생합니다. 뿐만 아니라 서버 연결이 끊어졌습니다.
파일이없는 경우 어떻게 서버에 대한 연결이 끊어지지 않도록 할 수 있습니까?
InputStream inputStream = new BufferedInputStream(socket().getInputStream());
int i = -1;
while ((i = bufferedInputStream.read()) != -1) {
byteArrayOutputStream.write(i);
}
위 코드에서 bufferedInputStream에서 read()를 호출하면 예외가 발생합니다. 이 예외를 처리하고 서버와의 연결을 끊을 수있는 방법은 무엇입니까?
감사합니다.
이 게시물은 어디에서, 왜 내가 예외를 얻는지를 도왔습니다. 감사. – Upendra
예외가 끝난 후 연결이 닫히지 않거나 처리되지 않으면 스트림 정리를 처리해야합니다. 스트림을 클로우즈하고 있지 않는 경우, 소켓에 바인드 된 스트림이 존재합니다. 소켓을 닫으면 소켓과 연결된 스트림이 내부적으로 닫힙니다. 내 자바 기술은 매우 가난합니다. 내가 틀린 곳에서 나를 교정 해주세요. – Upendra
@Upendra 무슨 말씀 이세요? 나는 '물줄기 청소'에 관해 아무것도 말하지 않았다. 아무것도 닫지 말고 시간 제한을 메모하고, 계산 한 다음 다시 시도하십시오. 너무 많은 타임 아웃이 발생하거나 read()가 -1을 반환하거나 다른 IOException이 발생하는 경우 소켓을 닫거나 출력 스트림을 감싸는 경우 더 나은 출력 스트림을 생성하는 것이 좋습니다. 소켓을 닫으면 스트림이 닫히고 그 반대의 경우도 마찬가지입니다. – EJP