- 1:1 단방향 통신 (클라이언트측)2024년 09월 15일
- tjdudtn
- 작성자
- 2024.09.15.:47
import java.io.IOException; import java.io.PrintWriter; import java.net.Socket; public class ClientFile { public static void main(String[] args) { // 클라이언트 측 준비물 // 1. 서버측 IP주소와 포트 번호가 필요하다. // 2. 서버측 소켓과 연결될 소켓이 필요 하다. Socket socket = null; try { socket = new Socket("localhost", 5001); PrintWriter writer = new PrintWriter(socket.getOutputStream(), true); writer.print("안녕 반가워~"); // writer.flush(); // new PrintWriter(socket.getOutputStream(), true) --> true - auto flush 설정 } catch (Exception e) { e.printStackTrace(); } finally { if(socket != null) { try { socket.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
PrintWriter 사용 이유
1. 편리한 메서드: print(), println(), printf()와 같은메서드를 제공하여 다양한 형식의 데이터를 손쉽게 출력할 수 있습니다.2. 자동플러시(autoFlush): PrintWriter를 생성할 때 autoFlush를 true로 설정하면, println() 등의 메서드를 호출할 때 자동으로 버퍼가 플러시되어 데이터를 즉시 전송합니다. 이는 네트워크 소켓과 같이 실시간 데이터 전송이 중요한 경우에 유용합니다.3. 버퍼링: 출력 데이터를 버퍼에 저장한 후 한 번에 출력하여 성능을 향상시킵니다. 필요시 flush() 메서드를 호출하여 강제로 데이터를 출력할 수도 있습니다.주요 메서드
print(): 다양한 데이터 타입을 출력합니다. (문자열, 정수, 부동 소수점 등)println(): 데이터를 출력하고 새로운 줄로 이동합니다.flush(): 버퍼를 강제로 플러스하여 출력 스트림에 데이터를 씁니다.close(): 출력 스트림을 닫습니다.주의사항
예외처리: PrintWriter는메서드 호출 중 발생하는 입출력 예외를 던지지않고 내부적으로 처리하므로, 스트림 상태를 주기적으로 확인하거나명시적으로 checkError() 메서드를 호출하여 오류를 확인해야 합니다.
로컬호스트와 루프백(Loopback) 개념로컬호스트(Localhost)
개념: 로컬호스트는 현재 사용 중인 컴퓨터 자체를 나타내는 용어입니다. 네트워크 프로그래밍에서 로컬호스트는 localhost 또는 IP 주소 127.0.0.1 로 표현됩니다.용도: 네트워크 애플리케이션을 개발하거나 테스트할 때, 외부 네트워크에 의존하지 않고 자신의 컴퓨터에서 서버와 클라이언트를 실행하여 통신을 시도할 수 있습니다.루프백(Loopback)
개념: 루프백은 네트워크 장치가 자신에게 데이터를 보내는 가상의 네트워크 인터페이스입니다. 127.0.0.1 주소를 통해 루프백 인터페이스로 데이터를 보내면, 데이터는 외부 네트워크로 나가지 않고 즉시 자신에게 돌아옵니다.용도: 네트워크 소프트웨어를 개발하거나 디버깅할 때, 외부 네트워크 환경 없이 로컬에서 모든 테스트를 수행할 수 있습니다.System Call 이란 뭘까?+----------------------------+ | Your Computer | | (localhost / 127.0.0.1) | | | | +-------------+ | | | Application | | | +-------------+ | | | | | v | | +-------------+ | | | System Call | | | +-------------+ | | | | | v | | +-------------+ | | | Network | | | | Stack | | | +-------------+ | | | | | v | | Loopback Interface | | ^ | | | | | +-------------+ | | | Network | | | | Stack | | | +-------------+ | | | | | v | | +-------------+ | | | Application | | | +-------------+ | | | +----------------------------+
'JAVA > JAVA 유용한 클래스' 카테고리의 다른 글
1:1 양방향 통신(채팅 기본 기능 구현) (0) 2024.09.15 1:1 양방향 통신 (0) 2024.09.15 1:1 단방향 통신 (서버측) (0) 2024.09.15 Socket 이란 뭘까? (0) 2024.09.15 고수준 스트림(Data/Object Stream) (0) 2024.09.15 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)