• 티스토리 홈
  • 프로필사진
    Song hyun
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
Song hyun
  • 프로필사진
    Song hyun
    • 분류 전체보기 (780)
      • 백준 (0)
      • 영어 (2)
        • Diary (0)
        • Toast Masters (2)
      • 메모 (13)
      • 설치 메뉴얼 (30)
      • Java (178)
      • MySQL (60)
      • JSP (67)
      • Springboot (46)
      • HTML,CSS, JS (71)
        • HTML (8)
        • CSS (12)
        • JavaScript (37)
        • HTML&CSS 스터디 (13)
      • C++ (7)
      • Linux (7)
      • JPA (34)
      • Kotlin (2)
      • Flutter (42)
      • Error Note (39)
      • 디자인 패턴 (12)
      • 디지털논리회로 (4)
      • 데이터베이스 시스템 (8)
      • 알고리즘 (7)
      • 운영체제 (3)
      • 이산수학 (3)
      • 인공지능 (1)
      • 자료 구조 (14)
        • 기본 개념 (14)
        • 자료구조 스터디 (0)
      • 💡My project (76)
        • 팩맨 : Java Swing 게임 제작 프로젝트 (6)
        • 네이트톡 : Java 소켓 통신 프로젝트 (4)
        • 포켓옥션 : HikariCP&JDBC CRUD 프.. (3)
        • 이지 부산 : BDIA-Devton 2024 프로.. (20)
        • 그린 유니버시티 : JSP를 사용한 학사관리 프로.. (1)
        • 애드 포커 : 웹 소켓과 Spring을 사용한 카.. (1)
        • 셸위 : 게임 친구 매칭 사이트 (21)
        • 다모아 : 개발자 중개 플랫폼 (20)
      • 📗스터디 (13)
        • CNN : 웹개발 스터디 (10)
        • Node&React로 유튜브 사이트 만들기 (3)
      • 📙독서 및 강연 기록 (36)
        • 강연 (14)
        • 독서 (22)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • [Java] 93. 1:1 단방향 통신 (Server 측)
        2024년 05월 22일
        • Song hyun
        • 작성자
        • 2024.05.22.:22
        728x90
        반응형

        [Java] 93. 1:1 단방향 통신 (Server 측)

        1. 왜 서버 측 기본 코드를 작성할까?

        2. 시나리오 코드 작성


        1. 네트워크 통신의 기초 이해

         

        (1) 네트워크 통신의 기초 이해: 서버는 네트워크 통신의 핵심 역할을 한다. 서버 측 코드를 작성함으로써, 우리는 네트워크 통신의 기본 개념을 이해할 수 있다.

        -서버 소켓 생성(ServerSocket): 네트워크 연결을 기다리는 소켓.

        -포트 바인딩: 특정 포트 번호에 서버 소켓을 결합하여, 외부에서 접근할 수 있게 한다.

        -클라이언트 연결 수락: 클라이언트가 서버에 연결될 수 있게 대기하고, 요청을 받아들인다.

         

         

        (2) 데이터 송수신 이해: 서버 측 코드에서 클라이언트로부터 데이터를 수신하고, 이를 처리하는 과정을 배울 수 있다. 이는 네트워크 프로그래밍의 핵심 기능 중 하나이다.

        -입력 스트림(InputStream): 클라이언트로부터 데이터를 읽어들이는 방법이다.

        -데이터 처리: 수신된 데이터를 처리하고, 출력하는 방법을 배운다.

         

         

        (3) 오류 처리 및 디버깅: 서버 측 코드를 작성하면서 발생할 수 있는 다양한 오류를 경험하고, 이를 해결하는 방법을 배울 수 있다.

        -예외 처리(Exception handling): 네트워크 통신에서 발생할 수 있는 예외 상황을 처리하는 법을 알 수 있다.

        -디버깅(Debugging): 코드의 문제를 파악하고, 수정하는 능력을 키운다.

         


        2. 시나리오 코드 작성

         

        (1) Client의 연결 요청을 받아들일 ServerSocket 생성, ServerSocket에 포트 번호 5000을 초기화한다.
        (2) 포트 번호 5000인 클라이언트가 연결을 요청할 때, 이와 연결할 socket을 serverSocket.accept()를 통해 생성한다.
        (3) 받은 데이터를 전달하고, 읽어들이기 위해 InputStream(기반)-BufferedReader(보조) 스트림을 사용한다.
        (4) InputStream으로 받아들이고, BufferedReader를 통해 한 줄 단위로 읽어들인 데이터를 String 변수 message에 담아 출력한다.
        (5) 마지막으로 serverSocket을 닫아준다.(.close())

        package ch02;
        
        import java.io.BufferedReader;
        import java.io.IOException;
        import java.io.InputStream;
        import java.io.InputStreamReader;
        import java.net.ServerSocket;
        import java.net.Socket;
        
        public class ServerFile {
        
        	public static void main(String[] args) {
        
        		// 준비물
        		// 1. 서버 소켓이 필요하다.
        		// 2. 포트 번호가 필요하다. (0~65535까지 존재한다.)
        		// 2-1. 잘 알려진 포트 번호: 주로 시스템 레벨에서 먼저 선점 중 (0-1023)
        		// 2-2. 등록 가능한 포트 번호: 1024-49151
        		// 2-3. 동적/사설 포트 번호: 그 외 임시 사용을 위해 할당된다.
        
        		// 지역 변수 -->
        		ServerSocket serverSocket = null;
        		try {
        			serverSocket = new ServerSocket(5001);
        			System.out.println(" 서버를 시작합니다. 포트 번호 : 5001 ");
        			Socket socket = serverSocket.accept(); // while --> return socket
        			// client와 연결된 socket을 return 한다.
        			System.out.println(">>> 클라이언트가 연결하였습니다. <<<");
        
        			// 데이터를 전달 받기 위해서는 뭐가 필요하다? --> 스트림!
        			InputStream inputStream = socket.getInputStream();
        			// 문자 기반 스트림
        			BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
        
        			// 실제 데이터를 읽는 행위가 필요하다.
        			String message = reader.readLine();
        			System.out.println("클라이언트 측 메세지 전달 받음 : " + message);
        
        			socket.close();
        
        		} catch (Exception e) {
        			e.printStackTrace();
        		} finally {
        			if (serverSocket != null) {
        				try {
        					serverSocket.close();
        				} catch (IOException e) {
        					e.printStackTrace();
        				}
        			}
        		}
        	}
        
        }
        728x90
        반응형

        'Java' 카테고리의 다른 글

        [Java] 95. 1:1 양방향 통신 (서버 측)  (0) 2024.05.22
        [Java] 94. 1:1 단방향 통신 (Client)  (0) 2024.05.22
        [Java] 92. Socket이란?  (0) 2024.05.22
        [Java] 91. 고수준 스트림 (Object)  (0) 2024.05.22
        [Java] 90. 고수준 스트림 (Data)  (0) 2024.05.22
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바