[JAVA] 1:1 단방향 통신 (클라이언트측)

2024. 5. 24. 15:34·JAVA
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 이란 뭘까?

'JAVA' 카테고리의 다른 글

[JAVA] 1:1 양방향 통신(채팅 기본 기능 구현)  (0) 2024.05.24
[JAVA] 1:1 양방향 통신  (0) 2024.05.24
[JAVA] 1:1 단방향 통신 (서버측)  (0) 2024.05.24
[JAVA] Socket 이란?  (0) 2024.05.23
[JAVA] 고수준 스트림(Data/Object Stream)  (0) 2024.05.22
'JAVA' 카테고리의 다른 글
  • [JAVA] 1:1 양방향 통신(채팅 기본 기능 구현)
  • [JAVA] 1:1 양방향 통신
  • [JAVA] 1:1 단방향 통신 (서버측)
  • [JAVA] Socket 이란?
미로910
미로910
개발자를 꿈꾸는 민경이의 기록 블로그
  • 미로910
    개발 note
    미로910
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 설치 메뉴얼
      • HTML
      • JAVA
        • Java 기초
        • Java 응용
        • 자료구조
        • HTTP
        • JSP 프로그래밍
      • MySQL
        • MySQL 기본
        • 1일 1쿼리
      • CSS
      • Spring boot
      • JS
        • 게시판 만들기
      • Git
      • Flutter
        • MVVM 활용
        • 심화 버전
        • 1일 1 Flutter
      • 디자인 패턴의 활용
      • error note
      • My Project
        • [졸작] LLM 기반 특허 유사도 분석 시스템
        • 도서 관리 프로그램 (final project)
        • amigo
        • 친구 매칭 프로그램(FMP)
      • Python
      • 딥러닝
      • 네트워크
      • 공부 노트
        • 연구회
        • 자료구조
      • 기타
  • 블로그 메뉴

    • 홈
    • 전체보기
    • -----------------------
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Flutter
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
미로910
[JAVA] 1:1 단방향 통신 (클라이언트측)
상단으로

티스토리툴바