[Java] 네트워크와 소켓 구현을 위한 개념

JUNHO YEOM·2022년 12월 12일
0

JAVA

목록 보기
9/14

3주차 : 채팅 구현하기
채팅에 대한 기본적인 사항

Network

computer간의 data를 주고받기 위해 여러개의 computer를 연결(유, 무선)시켜 놓은 물리적인 망

일반적으로 크기를 기준으로 여러가지 Network를 구성합니다.
PAN(Personal Area Network): 블루투스
LAN(Local Area Network)
Network of Network => Internet

Network Service

우리는 인터넷 상에서 네트워크를 통한 서비스를 이용할 수 있습니다.
email, www, ftp와 같은 서비스들이 포함됩니다.


Network를 통한 통신

Network를 통해 computer가 데이터 통신을 하려면
Network에 참여하고 있는 각 computer에게 논리적인 주소(IP Adress)를 부여하고,
이를 통해 서로 통신을 할 수 있게 된다.


Protocol

데이터를 주고받기 위해 사용하는 통신 규칙을 의미합니다.
TCP, UDP, HTTP등의 다양한 프로토콜이 있습니다.


Port

하나의 숫자를 이야기 합니다. 16bit로 이루어져 있으며
0~ 65,535사이의 숫자로 이루어져 있습니다.
0 ~ 1,023의 포트번호 reserved port 라고 하여 약속된 번호들이 주로 사용된다.
port는 자신의 computer에서 실행되는 program에 활용될 수 있는 번호입니다.
포트번호는 Unique하게(겹치지 않게) 사용되어야 합니다.


다른 컴퓨터의 프로그램과 통신하기 위한 주소

컴퓨터와 컴퓨터가 통신하기 위해서는 IP와 Port번호가 필요합니다.
먼저, IP로 컴퓨터를 식별하여 컴퓨터를 특정합니다.
두번째로, Port번호로 프로그램을 특정하여 해당 프로그램을 특정하여 프로그램과 통신합니다.



Java에서의 Socket 통신

프로그램을 작성하는것이 너무 어려움
BSD계열의 Unix에서 "Socket" 라이브러리를 만들었습니다.
Socket을 이용하여 어려운 개념은 감추고, 직접 프로그래밍 하는것보다 훨신 간편하게
통신을 할 수 있게 되었습니다.
Java에서도 소켓통신을 지원하기 위해 Socket Class를 제공합니다.


소켓은 Port가 추상화된 것이다

소켓은 데이터 데이터 통신을 위해서 Port를 추상화 시킨 것입니다.
일단 소켓을 만들면 통신할 수 있게 됩니다.
소켓은 한쪽에만 만들어질 수 없고, 양쪽에 만들어집니다.
소켓이 만들어졌다는 의미 자체가 이미 통신할 준비가 되었음을 의미합니다.



채팅을 위한
JavaFx
Java의 표준 GUI 라이브러리인 Swing을 대체하는 Library
1. Library 다운로드
2. Javafx사용

fx 실행이 안됨니다
VM Argument설정
1. Run As
2. Arguments

event handling
-> 사용자가 발생한 이벤트를 추가하려면 어떻게 하나요?
=> Event Delegation(위임) model

Event 처리방식의 개념

  1. EventSource
  2. Event 명
  3. Listner 객체
  4. Event 객체 - 이벤트가 발생할 때마다 객체가 만들어집니다.

Click 발생
-> JVM이 이벤트 상태정보 객체 생성
-> Event 객체

Event 객체
1. Event Source
2. Event 명 -> class로 이용 -> ActionEvent
3. Listner 객체(이벤트 쿼리 객체)
4. Event 객체 (event 상세공복)


Network Program
C/S구조
-> Client + Server 구조

  • Server: Client가 접속하기를 기다리다가 접속이 들어오면 응답합니다.
  • Client: 능동적으로 서버에 접속하는 Process
  • Server와 Client의 통신: 서버와 클라이언트의 양 끝단에 소켓객체가 있어야 합니다.
  • 서버는 클라이언트 접속을 기다려야 하고, 접속이 들어오면, 연결시켜 주어야 합니다.
    클라이언트에서 연결 요청을 하게 되면 서버에 있는 서버 소켓 객체가 소켓을 만듭니다.
    클라이언트에서도 소켓을 만듭니다. 양 끝단에서 모두 소켓 객체가 생성되면 통신할 수 있는 환경이 만들어 집니다.

데이터를 주고 받으려면?

  1. 서버가 대기한다.
  2. 클라이언트가 접속 시도한다.
  3. 서버 소켓 객체에 연결 요청이 전달된다.
  4. 서버 소켓 객체에서 서버 소켓을 만들고, 클라이언트에서 소켓이 작성된다.
  5. 양쪽에 소켓이 생성 되었다면 양 끝단의 소켓이 인풋 스트림과 아웃풋 스트림으로 연결된다.
  6. 통신 성공


연습문제 1

  1. 클라이언트에게 서버에 접속
  2. 서버가 클라이언트에게 현재 날자로 전송
  3. 클라이언트 화면에 출력
  4. 서버와의 연결 종료

포트번호는 자바의 특정 서버 객체에 길을 열어줘서 접속할 수 있게 해준다.
그렇게 하기 위해서 소켓 만들 때 포트번호를 제공해 주어야 한다.


java 화면 구성
nort|
west| 주변에 컨텐츠가 없으면 주변 화면을 넓게 가져갑니다.
east|
center: TextArea
south: 버튼

0개의 댓글