JAVA - 17
카테고리: java
SimpleServer3.java
지속적인 채팅 프로그램의 서버 부분을 구현한 것입니다. 다른 클라이언트와의 통신을 관리하고, 서버에서 입력받은 메시지를 클라이언트로 전송하며 클라이언트로부터 받은 메시지를 출력합니다.
서버는 다음과 같은 동작을 수행합니다:
- 서버 소켓 생성 및 클라이언트 연결 대기: 서버 소켓을 생성하고 특정 포트를 listening 상태로 대기합니다. 클라이언트가 연결 요청을 보내면 해당 연결을 수락하고 통신할 소켓을 생성합니다.
- 입출력 스트림 설정: 키보드 입력을 위해
BufferedReader
를 생성하고, 소켓으로부터 입력 및 출력 스트림을 생성합니다. 이를 통해 서버는 클라이언트로부터 메시지를 받을 수 있고, 클라이언트에게 메시지를 보낼 수 있습니다. - 클라이언트에게 환영 메시지 전송: 서버가 실행되면 클라이언트에게 환영 메시지를 전송합니다. 이 메시지는 서버에서 클라이언트로 객체 스트림을 통해 전달됩니다.
- 메시지 주고받기: 서버는 무한 루프를 돌면서 클라이언트가 보낸 메시지를 받고, 서버에서 입력한 메시지를 클라이언트에게 전송합니다. 사용자가 “exit”를 입력하면 루프를 종료하고 연결을 종료합니다.
- 연결 및 리소스 정리: 루프를 종료한 후에는 입출력 스트림과 소켓을 닫습니다. 예외 처리를 통해 클라이언트의 연결이 끊어졌을 때에도 적절한 메시지를 출력하고 종료합니다.
SimpleClient3.java
클라이언트는 다음과 같은 동작을 수행합니다:
- 서버에 연결: 클라이언트는 사용자가 입력한 서버 이름과 포트 번호를 사용하여 서버에 연결합니다.
- 입출력 스트림 설정: 키보드 입력을 위해
BufferedReader
를 생성하고, 소켓으로부터 입력 및 출력 스트림을 생성합니다. 이를 통해 클라이언트는 서버로 메시지를 보낼 수 있고, 서버로부터 메시지를 받을 수 있습니다. - 연결 완료 및 환영 메시지 출력: 클라이언트가 서버에 성공적으로 연결되면 “접속 완료…” 메시지를 출력하고, 서버로부터 받은 환영 메시지를 출력합니다.
- 메시지 주고받기: 클라이언트는 무한 루프를 돌면서 사용자로부터 메시지를 입력받고, 해당 메시지를 서버로 전송합니다. 그런 다음, 서버로부터 받은 메시지를 출력합니다. 사용자가 “exit”를 입력하면 루프를 종료하고 통신을 종료합니다.
- 연결 및 리소스 정리: 루프를 종료한 후에는 입출력 스트림과 소켓을 닫습니다. 예외 처리를 통해 서버의 연결이 끊어졌을 때에도 적절한 메시지를 출력하고 종료합니다.
결과화면:

ImageDownload.java
- 이미지 URL 설정: 코드에서는
website
라는 변수에 이미지를 다운로드할 웹 사이트의 URL을 지정합니다. - URL 객체 생성: 지정한 URL을 사용하여
URL
객체를 생성합니다. 이 객체를 통해 이미지를 다운로드할 수 있습니다. - 입력 및 출력 스트림 설정:
InputStream
을 사용하여 URL에서 데이터를 읽어들이고,FileOutputStream
을 사용하여 이미지를 저장할 파일을 생성합니다. - 이미지 다운로드:
InputStream
의read
메서드를 사용하여 데이터를 읽어들입니다. 읽은 데이터는FileOutputStream
의write
메서드를 사용하여 파일에 저장됩니다. 이 과정은 데이터를 더 이상 읽을 수 없을 때까지 반복됩니다. - 스트림 및 리소스 정리: 이미지 다운로드가 완료되면
InputStream
과FileOutputStream
을 닫아서 리소스를 해제합니다.
실행하면 다음과 같은 이미지파일이 다운로드됩니다.

댓글 남기기