2.

package Ex_0520.실습문제;

import Ex_0520.BorderLayoutEx;
import Ex_0520.Myframe;

import javax.swing.*;
import java.awt.*;

public class Q2  extends JFrame {

    Q2(){

        setTitle("BorderLayOut 예제");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 윈도우 창 종료시 프로세스 종료
        setSize(300,200);

        Container cp = getContentPane();
        cp.setLayout(new BorderLayout(5,5)); // 배치관리자

        cp.add(new JButton("NORTH"),BorderLayout.NORTH);
        cp.add(new JButton("SOUTH"),BorderLayout.SOUTH);
        cp.add(new JButton("CENTER"),BorderLayout.CENTER);
        cp.add(new JButton("WEST"),BorderLayout.WEST);

        this.setVisible(true); // 화면에 프레임 출력
    }
    public static void main(String[] args) {
        new Q2();
    }

}

 

 

3. 

package Ex_0520.실습문제;

import Ex_0520.CPEx;

import javax.swing.*;
import java.awt.*;

public class Q3 extends JFrame {

    Q3(){
        setTitle("FlowLayout 예제");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(300,300);

        // 컨텐트 팬 알아내기
        Container cp = getContentPane();
        // 배치 관리자 설정하기
        cp.setLayout(new FlowLayout());

        // 컨텐트 팬에 요소들 생성하고 붙이기 
        cp.add(new JLabel("100+200"));
        cp.add(new JButton("="));
        cp.add(new JLabel("300"));



        setVisible(true);
    }

    public static void main(String[] args) {
        new Q3();
    }
}

 

 

5.

package Ex_0520.실습문제;

import Ex_0520.GridLayoutEx1;

import javax.swing.*;
import java.awt.*;

public class Q5 extends JFrame {


    Q5() {
        setTitle(" GridLayout 예제 ");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 윈도우 창 종료시 프로세스 종료
        setSize(500, 200);


        Container cp = getContentPane(); // 프레임의 컨테이너 팬 영역 얻어오기

        Color[] color = {Color.RED, Color.ORANGE, Color.YELLOW, Color.GREEN,
                Color.CYAN, Color.BLUE, Color.MAGENTA, Color.GRAY,
                Color.PINK, Color.LIGHT_GRAY};

       // 4x4 설정
        cp.setLayout(new GridLayout(4, 4));

        // 16개의 버튼 부착
        for (int i = 0; i < 16; i++) {
            JLabel la = new JLabel(Integer.toString(i));
            la.setOpaque(true); // 불투명 설정
            la.setBackground(color[i%10]);
            cp.add(la);
        }

        this.setVisible(true); // 컴포넌트 표시
    }

    public static void main(String[] args) {
        new Q5();
    }
}

 

 

6.

package Ex_0520.실습문제;

import Ex_0520.NullContainerEx;

import javax.swing.*;
import java.awt.*;

public class Q6 extends JFrame {

    Q6(){
        setTitle("배치관리자 없는 Layout");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 윈도우 창 종료시 프로세스 종료
        setSize(300,300);

        Container cp = getContentPane(); // 프레임의 컨테이너 팬 영역 얻어오기
        // 배치 관리자 설정 - 배치 관리자 없음
        cp.setLayout(null);

        for(int i=0;i<20;i++){
            JLabel la = new JLabel(Integer.toString(i));
            // 위치 설정
            int x = (int) (Math.random() * (this.getWidth() - 50));
            int y = (int) (Math.random() * (this.getHeight() - 50));
            la.setLocation(x,y);

            // 크기 설정
            la.setSize(20,20);
            la.setForeground(Color.MAGENTA);
            
            cp.add(la); // la를 컨텐트 팬에 부착
        }

        this.setVisible(true); // 컴포넌트 표시
    }

    public static void main(String[] args) {
        new Q6();
    }
}

'자바 개념 > 수업 내용 정리' 카테고리의 다른 글

8-1 배치 관리자  (2) 2024.06.02
8장 스윙 기초  (0) 2024.06.02

1. 수업 내용 

▶  Serial과 String 클래스 

 

아두이노는  흔히 사용되는 시리얼 통신과 문자열을 다루기 위해 Serial과 String 클래스를 기본 클래스로 포함하고 있다. 

기본 클래스는 클래스를 사용하기 위한 별도의 헤더파일을 선언 할 필요가 없다. 

 

통신을 하기 위해 직접 연결될 기기와 핀을 꽂아 하드웨어적으로 통신하는 방법도 있지만, 미리 생성된 객체를 통해 통신하는 것이 더욱 좋다. ( 간결성, 편리성, 등등.. ) 

 

 

우노의 경우 하드웨어에 기반한 통신을 위한 포트를 하나만 제공한다. (우노에 보면 핀 번호 0번은 RX, 1번은 TX를 위한 핀이다.)

즉, 우노의 경우 시리얼 통신을 위해 생성 될 수 있는 객체는 하나뿐인 것이다. 

메가의 경우에는 시리얼 통신을 위한 포트가 4개 존재한다. 즉, 우노와 달리 시리얼 통신을 위해 생성 할 수 있는 객체가 4개인 것이다. 

 

Serial 클래스에서 생성한 객체는 Serial_ 로 이름이 붙여지게 된다.  우노의 경우에는 Serial 통신을 위한 객체가 하나뿐이므로 Serial은 클래스이면서 객체로 사용된다. 하지만 메가의 경우 Serial , Serial 1~3 의 객체가 정의되어 있다. 

 

 

 

 

▶ UART 시리얼 통신 

RX와 TX는 서로 교차되어 연결 되야 한다. 

아두이노 보드와 컴퓨터간의 통신은 usb로 이루어지는데 , 컴퓨터에서 보낸 데이터를 직접 받아들일 수 없기 때문에 UART데이터로 변환해서 받아야한다. 

USB-UART 변환을 위해 우노와 메가2560에서는 ATmega16u2를 이용한다. 

 

 

 

컴퓨터와 아두이노의 통신을 위해 스케치에서 통신을 위한 포트를 설정해줘야한다. 

송신측에서  데이터를 보내는 속도와 수신측에서 데이터를 받는 속도를 맞추기 위해  baud rate 가 사용된다. 

 

void setup() { 
  Serial.begin(9600); // 괄호 안에 baud rate값 설정
}

 

 

▶ Serial 클래스에서 제공하는 함수 

  • print() , println()
  • write() : 문자나 문자열 출력에 사용됨
  • int available( ) : 시리얼 통신 수신 버퍼에 저장된 데이터의 바이트 수 
  • int peek ( ) : 시리얼 통신수신 버퍼의 첫번째 바이트 데이터 또는 -1, 읽어온 데이터를 수신 버퍼에서 제거하지 않음 
  • int read ( ) : 시리얼 통신의 첫번째 문자 데이터 또는 -1 , 읽어온 데이터를 수신 버퍼에서 제거함 

 

 

 

 

2.  실습 과제 

 

▶  수동 부저 

 

 

수동 부저란 능동 부저와 달리 신호 단자(S)에 특정 주파수의 펄스가 인가 되면 해당 음높이의 소리를 출력한다. 

능동 부저와 달리 0,1에 따라 소리가 나고 안나고하는 것이 아니라 원하는 음 높이를 설정하여 소리를 출력할 수 있다는 것이다. 

 

그런데 아날로그 신호는 음의 높낮이를 결정할 수 있지만, 전기적인 값을 어떻게 음낮이를 결정할 수 있을까? 

 

이때 이용되는것이 PWM 신호이다. 이는 마치 디지털 신호를 아날로그 신호처럼 변환해주는 것이다.  

아두이노의 tone함수가 그러한 예 중의 하나이다. tone 함수는 PWM 신호를 이용하여 원하는 음 높이의 소리를 출력할 수 있도록 해준다. 

 

  •  tone ( 핀번호, 출력할 주파수, 출력 지속 시간(ms) ) 

출력 지속 시간을 지정하지 않으면 noTone이 호출 될 때까지 지속된다. 

 

  • noTone(핀번호) 

 


 

✅ 실습 과제 

   

1~8의 번호를 입력 받아 도~한 옥타브 도의 음을 출력해주는 코드 작성하기

 

 

#define NOTE_C4 262
#define NOTE_D4 294
#define NOTE_E4 330
#define NOTE_F4 349
#define NOTE_G4 392
#define NOTE_A4 440
#define NOTE_B4 494
#define NOTE_C5 523

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(10,OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
   if(Serial.available()>0){ // 데이터의 입력이 있을때만 동작
    
    byte data= Serial.read(); // 수신 버퍼에서 한 바이트씩 읽어오기 

    switch(data){

      case '1': tone(10, NOTE_C4);  delay(1000); break; 
      case '2': tone(10, NOTE_D4);  delay(1000); break;
      case '3': tone(10, NOTE_E4);  delay(1000); break;
      case '4': tone(10, NOTE_F4);  delay(1000); break;
      case '5': tone(10, NOTE_G4);  delay(1000); break;
      case '6': tone(10, NOTE_A4);  delay(1000); break;
      case '7': tone(10, NOTE_B4);  delay(1000); break;
      case '8': tone(10, NOTE_C5);  delay(1000); break;

    }

    noTone(10);
    
  }
  
}

 

 

'임베디드 시스템' 카테고리의 다른 글

4장 디지털 입 출력  (2) 2024.06.16
5장 인터럽트와 millis  (0) 2024.06.16
2. 아두이노 소개  (2) 2024.06.04

1. 수업 내용 

 

  • pinMode : 디지털 입출력 핀을 입력핀으로 할지 출력핀으로 할지 설정하기 위한 함수
  • digitalWrite : 데이터 출력을 위한 함수, HIGH/LOW 값을 지정 

 


 

▶  1초 간격으로  LED 점멸하기 

 


 

 ▶ 능동 부저 연결하기 



 
능동 부저는 s(신호) 단자에 값이 들어가기만 하면 소리가 출력됨 (원하는 소리를 출력X )  


 

 

 2. 실습 과제

 - blink의 초기주기는 2초이고 반복할때 마다 10%씩 주기가 감소한다.
 - blink의 주기가 20ms가 되면 다시 주기를 2초로 되돌린다. 

 

▶ 풀이과정 

 

#define led 13 // 13번 핀을 led로 사용하기 

int time=1000; //  초기 주기 값 설정 

void setup() {
  pinMode(led,OUTPUT); // led 핀 출력 모드로 설정하기 
  Serial.begin(9600); 
}

void loop() {

digitalWrite(led,HIGH);
delay(time); 
digitalWrite(led,LOW);
delay(time); 

time=time*0.9; // 주기 10% 감소시키기 
if(time<=10){time=1000;} // 주기가 20ms가 되면 다시 2초로 설정하기 
}





 

'임베디드 시스템' 카테고리의 다른 글

4장 디지털 입 출력  (2) 2024.06.16
5장 인터럽트와 millis  (0) 2024.06.16
3. 아두이노 기본 클래스  (0) 2024.06.04

 

이전 글에 이어서 배치 관리자에 대해서 좀 더 예제를 통해 자세히 알아보자 

 

배치 관리자에는 크게 4가지 유형이 있다고 했다. 

예제를 통해 각각의 배치 관리자를 이용하는 방법에 대해 공부해보자. 

 

 


 

1️⃣ FlowLayout

 

 FlowLayout은 삽입되는 컴포넌트들을 왼쪽에서 오른쪽으로, 그리고 다시 위에서 아래로 배치한다. 

 

 

🍀 생성자 

  • FlowLayout
    모든 설정을 디폴트 값으로 생성한다. 
  • FlowLayout(정렬 방법) 
    디폴트 정렬 방법은 중앙정렬이다. 정렬 방법에는 왼쪽, 중앙, 오른쪽 정렬이 있다.
    - FlowLayout.LEFT
    - FlowLayout.CENTER ( 디폴트 값 ) 
    - FlowLayout.RIGHT 
  • FlowLayout( 정렬 방법, 수평 간격, 수직 간격 ) 
    디폴트 값은 둘다 5이다. 
    컴포넌트 사이의 수평 간격과 수직 간격을 설정 할 수 있다. 

 

 

🍀  예제 문제 

 

 

위의 그림과 같이 GUI 프로그래밍을 하기 위해서는 배치 관리자의 종류로 FlowLayout을 사용하여  (FlowLayout.LEFT,30,40)으로 생성해주면 된다. 

 

package chapter8;

import javax.swing.*;
import java.awt.*;

public class FlowLayoutEx extends JFrame {

    FlowLayoutEx(){
        setTitle("FlowLayout Sample");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(300,200);

        // 컨텐트 팬에 버튼 생성하기
        Container cp = getContentPane(); // 컨텐트 팬 알아내기
        cp.setLayout(new FlowLayout(FlowLayout.LEFT,30,40)); // 어떤식으로 배치 할지 설정하기

        cp.add(new JButton("add"));
        cp.add(new JButton("sub"));
        cp.add(new JButton("mul"));
        cp.add(new JButton("div"));
        cp.add(new JButton("calculate"));


        setVisible(true);
    }

    public static void main(String[] args) {
        new FlowLayoutEx();
    }

}

 

 

 

2️⃣ BorderLayout

 

BorderLayout은 컴포넌트들을 5개의 구역으로 나눠서 배치하는 방법이다. 따라서 컴포넌트들에게 배치 할 구역을 지정해줘야한다. 

만약 지정해주지 않는다면 디폴트 값이 center이다. 

 

🍀 생성자 

  • BorderLayout()
  • BorderLayout( 수평 간격, 수직 간격 ) 
    디폴트 값은 모두 0 
  • add ( 컴포넌트 생성, 컴포넌트의 위치 설정 ) 
    - BorderLayout.NORTH
    - BorderLayout.SOUTH
    - BorderLayout.EAST
    - BorderLayout.WEST
    - BorderLayout.CENTER ( 디폴트 값 ) 

 

 

🍀 예제 문제 

 

 

 

컴포넌트들이 배치된 형태를 보았을때 BorderLayout을 사용하였음을 알 수 있다. 

BorderLayout의 생성자에게 값을 넘겨 위와 같이 GUI 화면을 출력해보자. 

 

package chapter8;

import javax.swing.*;
import java.awt.*;

public class BorderLayoutEx extends JFrame {
    BorderLayoutEx(){
        setTitle("BorderLayout 예제");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(300,200);

        // 컨텐트 팬에 버튼 부착하기
        Container cp = getContentPane(); // 컨텐트 팬 알아내기
        cp.setLayout(new BorderLayout(30,20)); // 배치 관리자 설정
      //cp.setLayout(new BorderLayout()); // 디폴트값 0


        // 버튼 부착하기
        cp.add(new JButton("add"),BorderLayout.NORTH);
        cp.add(new JButton("sub"),BorderLayout.SOUTH);
        cp.add(new JButton("mul"),BorderLayout.EAST);
        cp.add(new JButton("div"),BorderLayout.WEST);
        cp.add(new JButton("calculate"),BorderLayout.CENTER); // BorderLayout.CENTER 안써도 됨

        setVisible(true);
    }

    public static void main(String[] args) {
        new BorderLayoutEx();
    }
}

 

 

3️⃣ GridLayout 

 

GridLayout이란 컨테이너 공간을 동일한 크기의 격자로 나누어서 배치하는 방법이다. 

왼쪽에서 오른쪽으로, 다시 위에서 아래로 배치 할 수 있다. 

생성자를 통해 몇행 몇열로 배치 할 지도 결정할 수 있다. 

 

🍀 생성자

  • GridLayout() 
    디폴트 값은 1행 1열이다. 
  • GridLayout( 행, 열 ) 
  • GridLayout( 행, 열 , 수평 간격, 수직 간격) 
    수평, 수직 간격의 디폴트 값은 1이다. 

 

 

🍀 예제 문제 

 

 

컴포넌트들의 배치 형태를 보니 gridLayout 형태임을 알 수 있다. 

또한 1행 10열의 배치 구조로 각각의 버튼에 0~9의 인덱스를 설정하면 된다. 

 

package chapter8;

import javax.swing.*;
import java.awt.*;

public class GridLayoutEx extends JFrame {
    GridLayoutEx(){
        setTitle("GridLayout 예제");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(500, 200);
       

        // 컨텐트 팬에 버튼 부착하기
        Container cp = getContentPane();
        // 1x 10열의 배치 관리자 생성하기
        cp.setLayout(new GridLayout(1, 10));
      //cp.setLayout(new GridLayout(2,5,5,5));

        for(int i=0;i<10;i++){
            String text = Integer.toString(i); // i를 문자열로 변환
            cp.add(new JButton(text));
        }

        setVisible(true);
    }

    public static void main(String[] args) {
        new GridLayoutEx();
    }

}

 

 

 

4️⃣ 배치 관리자가 없는 경우 

 

  • 컴포넌트의 크기나 위치를 개발자 임의로 설정하고 싶은 경우
  • 게임처럼 컴포넌트의 위치가 수시로 변하는 경우 
  • 컴포넌트들을 겹쳐서 출력하고자 하는 경우 

 

🍀  배치 관리자를 제거하는 방법

      -  컨테이너. setLayout ( null )

 

배치 관리자를 제거하면 컴포넌트의 크기는 0으로 설정되고 위치는 예측 할 수 없게 된다.

그래서 개발자가 컴포넌트의 크기와 위치를 지정해줘야한다

 

 

🍀  컴포넌트의 크기와 위치를 설정하는 메서드 

 

        -  void setSize(int widht, int height) 
             컴포넌트의 크기 설정
        -  void setLocation(int x, int y) 
             컴포넌트의 위치 설정 
         - void setBound(int x, int y, int width, int height) 
             위치와 동시에 크기를 설정 

      

 

 

🍀 예제 문제 

 

 

 

 

package chapter8;

import javax.swing.*;
import java.awt.*;

public class NullLayoutEx extends JFrame {

    NullLayoutEx(){
        setTitle("Layout이 없는 경우");
        setDefaultCloseOperation(EXIT_ON_CLOSE); // 종료시 프로세스도 같이 종료하기
        setSize(300, 300);
      
        // 컨텐트 팬 설정하기 
        Container cp = getContentPane();
        cp.setLayout(null); // 배치 관리자 없애기

        // 컴포넌트 설정하기
        JLabel la = new JLabel("Hello Press Button!");
        la.setSize(200,20); // la 컴포넌트의 크기 설정하기 
        la.setLocation(130,50); // la 컴포넌트의 위치 설정하기
        cp.add(la); // la 컨텐트 팬에 부착하기

        // 9개의 버튼 컴포넌트를 생성하고 동일한 크기로 설정
        // 위치는 서로 겹치지 않게 설정하기

        for(int i=1;i<10;i++){
            JButton b = new JButton(Integer.toString(i)); // 번호가 있는 버튼 생성
            b.setSize(50,20); // 버튼의 크기 설정
            b.setLocation(i * 15, i * 15); // 버튼의 위치 설정
            //b.setBounds(i*15,i*15,50,20);
            cp.add(b); // 컨텐트 팬에 부착하기
        }


        setVisible(true); // 화면에 프레임 출력하기
    }

    public static void main(String[] args) {
        new NullLayoutEx(); // 코드의 최소화
    }
}

'자바 개념 > 수업 내용 정리' 카테고리의 다른 글

8장 실습 문제  (0) 2024.06.15
8장 스윙 기초  (0) 2024.06.02

GUI 응용프로그램

GUI란  Graphical User Interface 의 약자로 TUI(Text user interface)와 반대되는 개념이다. 

지금까지 작성한 프로그램들은 모두 텍스트 모드로 입출력이 되었기 때문에 TUI 응용 프로그램이라 할 수 있다. 

반면 GUI를 이용한 응용프로그램은 키보드 뿐만 아니라 마우스를 이용하여 사용자가 자유롭게 화면을 동작할 수 있다. 

 

자바는 AWT와 Swing 라이브러리를 제공하여 쉬운 GUI프로그래밍을 할 수 있도록 지원한다. 

 

 

 AWT와 Swing 라이브러리   

 

자바 언어는 GUI 응용 프로그램  작성을 위해서 다양한 GUI컴포넌트를 제공한다. 

GUI 컴포넌트는 AWT와 Swing 컴포넌트로 구분된다. 

 

  • AWT 컴포넌트 

자바가 처음 나왔을때 배포된 GUI패키지로 최근에는 거의 사용하지 않는다. 

이 컴포넌트는 운영체제의 도움을 받아 화면에 출력되기 때문에 속도는 빠르지만, 운영체제의 자원을 많이 사용하므로 운영체제에게 부담을 준다.  그래서 AWT 컴포넌트는 중량 컴포넌트 (Heavy weight component)라고도 불린다. 

 

또한 운영체제에 의존적 이므로 운영체제에 따라 출력화면이 다르게 나타날 수 있다.  

 

  • Swing 컴포넌트 

AWT를 기반으로 작성된 자바 라이브러리이다.  AWT 를 개선한 것이 스윙으로, 모든 운영체제에 동일한 출력화면이 나오며 

성능도 더 좋다.  스윙 컴포넌트는 운영체제의 도움을 받지 않기 때문에 경량 컴포넌트(light weight component)라고도 불린다. 

 

현재는 대부분 스윙 라이브러리를 사용하여 GUI 프로그래밍을 제작한다. 

 

 

 

 

Swing GUI 프로그래밍 

스윙 프로그램은 스윙 컴포넌트를 레고 블록 조립하듯이 작성한다. 

 

  • 최상위 컨테이너 
    다른 컨테이너에 포함 되지 않고도 화면에 출력되며 독립적으로 존재가능한 컨테이너 
    즉, 스스로를 화면에 출력 가능한 컨테이너이다. ex) JFrame
  • 컨테이너
    다른 컴포넌트를 포함 할 수 있는 GUI 컴포넌트로 java.awt.Container를 상속 받는다. 
    다른 컨테이너에 포함 될 수 있다. 
  • 컴포넌트 
    컨테이너에 포함되어야 화면에 출력 될 수 있는 GUI 객체이다. 

즉, GUI 프로그램은 최상위 컨테이너 위에 컨테이너들이 있고 그 안에 컴포넌트들이 위치하고 있는 것이 화면으로 출력되는 것이다. 

 

 

스윙 GUI 프로그램 만들기

스윙 GUI 프로그램을 만드는 과정은 3단계 이다. 

  1. 스윙 프레임 만들기
  2. main 메소드 작성
  3. 스윙 프레임에 스윙 컴포넌트 붙이기 

스윙 프레임은 모든 스윙 컴포넌트를 담는 최상위 컴포넌트 이다. 

GUI 프로그래밍을 케익을 만드는 과정에 비유해보자면 제일 먼저 케익을 올릴 판인 스윙 프레임을 준비하는 것이다.

 

스윙 프레임(JFrame)의 기본 구성은 프레임, 메뉴바, 컨텐트 팬으로 구성된다. 

  • 프레임 - 스윙 프로그램의 기본 틀
  • 메뉴바 - 메뉴들이 부착되는 공간
  • 컨텐트 팬 - GUI 컴포넌트들이 부착되는 공간 

 

스윙 프레임의 구성요소

 

 

스윙 프로그램은 마치 레고를 조립 하듯이 최상위 프레엠 위에 있는 컨텐트 팬 위에 화면에 출력하고 싶은 여러가지 컴포넌트들을 붙이고 이를 출력하는 것이다. 

 

스윙 응용 프로그램에서 main()의 기능은 스윙 응용 프로그램이 실행되는 시작점의 기능만 하면 된다. 

따라서 스윙 프레임을 생성하는 정도의 코드만 간결하게 작성해주면 된다. 

 

 public static void main(String[] args) {
        new MyFrame(); // 코드의 최소화
    }

 

 

 


 

1️⃣ 스윙 프레임 만들기 

 

스윙 프레임만 출력하기

 

package chapter8;

import javax.swing.*;
import java.awt.*;

// 스윙 프레임 만들기

public class MyFrame extends JFrame{

    MyFrame(){
        setTitle("첫번째 스윙 프레임");
        setDefaultCloseOperation(EXIT_ON_CLOSE); // 프레임 종료와 함께 프로그램도 종료하기 
        setSize(300, 300);

        setVisible(true); // 화면에 프레임 출력하기
    }

    public static void main(String[] args) {
        new MyFrame(); // 코드의 최소화
    }
}

 

 

 

2️⃣ 3개의 버튼을 가진 스윙 프레임 작성하기 

 

 

package chapter8;

import javax.swing.*;
import java.awt.*;

public class ContentPaneEx  extends JFrame {

    ContentPaneEx(){
        setTitle("컨텐트 팬 예제");
        setDefaultCloseOperation(EXIT_ON_CLOSE); // 종료시 프로그램도 같이 종료하기
        setSize(300, 150);

        // 컨텐트 팬에 버튼 부착하기
        Container cp = getContentPane(); // 컨텐트 팬 알아내기
        cp.setBackground(Color.ORANGE); // 오렌지 배경색 설정
        cp.setLayout(new FlowLayout()); // 배치 관리자 설정

        cp.add(new Button("ok"));
        cp.add(new Button("cancle"));
        cp.add(new Button("ignore"));



        setVisible(true); // 화면에 프레임 출력하기
    }

    public static void main(String[] args) {
        new ContentPaneEx(); // 코드의 최소화
    }
}

 

 

 

3️⃣  배치 관리자 설정하기 

 

배치 관리자는 컨테이너에 컴포넌트들을 어떤식으로 배치 할 것인지 결정한다. 

배치 관리자에는 크게 4가지 유형이 있다. 

  • FlowLayout 
    순서대로 왼쪽에서 오른쪽으로 배치한다. 위의 공간이 다 차면 아래로 배치한다. 
  • BorderLayout
    동서남북 + 중앙 5개의 영역으로 구분하여 배치한다. 지정한 영역에 컴포넌트를 배치한다. 
  • GridLayout
    컨테이너를 동일한 크기의 2차원 격자로 나눈다. flowlayout과 유사하게 왼쪽에서 오른쪽으로 , 다시 위에서 아래로 배치한다. 
  • CardLayout 
    카드를 쌓아 올리듯이 컴포넌트를 포개어 배치한다.  

 

배치 관리자의 대표적인 유형

 

 

 

JFrame 의 디폴트 배치 관리자는 BorderLayout으로, 위치를 지정하지 않은 경우 center가 기본값으로 설정된다. 

JPanel의 디폴트 배치 관리자는 FlowLayout 이다. 

 

 

 

2번 예제의 코드에서 배치 관리자 설정 부분을 주석 처리하면 어떤 화면이 출력 될까 ? 

 

🙊 예상해본 출력결과 
기본 배치 관리자가 BorderLayout으로 설정되고, 컴포넌트들의 위치를 정해주지 않았기 때문에 center에 배치 될 것이다.

따라서  주황색 배경화면에 마지막에 삽입된 ignore 버튼만이 출력되는 화면이 나오게 될 것이다. 

 

🙊 실제 출력결과 

그런데 출력 결과를 보니 ignore 버튼이 전체 프레임을 차지한 결과가 나왔다 . 

 

그 이유는 BorderLayout에서 center 영역은 나머지 부분이 비어있다면 그 부분을 모두 채워서 출력하도록 설정 되어있기 때문이다. 

지금은 네부분이 모두 비어있기 때문에 center의 값이 전체 프레임을 채워서 출력 된 것이다. 

North 부분에 버튼을 생성했다면 그 부분을 제외한 나머지 부분이 center 값으로 채워져서 출력되는 것이다. 

 

 

 

 

다음 글에서 각각의 배치 관리자에 대해 예제로 좀 더 자세히 알아보자 

'자바 개념 > 수업 내용 정리' 카테고리의 다른 글

8장 실습 문제  (0) 2024.06.15
8-1 배치 관리자  (2) 2024.06.02

01 네트워크 보안을 위협하는 네 가지 위험 요소에 대해 설명하시오.

  • 전송 차단 : 제삼자가 송신측에서 수신측으로 메세지를 전달할 수 없도록 하는 것 
  • 가로 채기 : 송신측에서 수신측으로 전달하는 메세지를 제삼자가 도청하는 것 
  • 변조  : 송신측에서 수신측으로 전달하는 원본의 메세지를 제삼자가 일부 또는 전부 변경하여 잘못된 데이터를 수신측에 전달 
  • 위조  : 제삼자가 메세지를 위조하여 송신측이 전달한 것 처럼 수신측으로 전송하는 것 

02 네트워크 보안의 필요성을 설명하시오

해킹, 바이러스 유포, 정보 유출 등 각종 사이버 범죄가 늘어나면서 네트워크 보안의 중요성도 커지고 있다. 인터넷과 모바일 등 정보 기술의 발전으로 수많은 데이터를 공유함으로써 보안을 위협하는 데이터 무단 유출/파괴/변조등 부작용이 발생하고 있다.

네트워크가 개방되고 성능 및 시스템 간 연결성이 강화될수록 이에 비례해서 취약성도 증대되고 있다. 네트워크 보안은 컴퓨터 간에 데이터를 안전하게 전송하는 것이다. TCP/IP 네트워크 프로토콜 구조는 전 세계의 서로 다른 기종 간 효율적인 상호 접속을 보장하지만여러가지 보안상 문제가 있어 피해사례가 증가하고 있으므로 네트워크를 이용한 피해를 예방할 수 있는 보안책이 필요하다. 


03 IP 스푸핑을 차단하는 가장 좋은 방법은 무엇인가?

패킷을 암호화하는 것이다. SSH를 사용하면 IP 스푸핑을 차단할 수 있다. 


04 시스템 보안 기술인 방화벽, 침입 탐지 시스템, 침입 방지 시스템에 대해 설명하시오.

  • 방화벽 : 외부 네트워크가 내부 네트워크로 진입하기 전에 반드시 방화벽을 통과하도록 함으로써 내부 자원을 보호하는 시스템이다. 방화벽은 허가했거나 인증된 트래픽만 허용한다. 하지만 반드시 내부로 들어와야하는 서비스(웹이나 메일)는 외부에서 무엇이 들어올지 모르기 때문에  해당 서비스 포트는 모두 허용으로 설정해야한다. 포트를 모두 허용하면 일반 사용자 뿐만아니라 여러 악성코드 등도 필터링 없이 들어올 수 있다. 침입 탐지 시스템과 침입 방지 시스템은 이러한 방화벽의 한계를 보안하기 위해 등장한 시스템이다. 
  • 침입 탐지 시스템 : 네트워크와 시스템을 실시간으로 모니터링하여 침입을 탐지하는 시스템이다. 하지만 침입 탐지는 가능하지만 차단을 불가능하고, 침입을 탐지하고 조치를 취하기까지 오랜 시간이 걸린다는 한계가 있다. 
  • 침입 방지 시스템 : 방화벽과 침입 탐지 시스템의 한계를 극복하기 위해 나온것이 침입 방지 시스템이다.  침입 방지 시스템이란 네트워크에 상주하면서 트래픽을 모니터링하여 유해 트래픽을 차단하고 의심스러운 세션을 종료시키는등 적극적으로 네트워크를 보호한다. 

 


05 방화벽의 종류를 설명하시오.

 

  • 스크리닝 라우터 (screening router) 
    네트워크에서 사용하는 프로토콜의 형태, 송신지의 주소, 수신지의 주소, 프로토콜의 제어 필드, 통신에 사용하는 포트번호를 분석하여 외,내부의 트래픽 진입을 허가 또는 거절하는 라우터이다. 
  • 배스천 호스트 
    배스천 호스트란 보호된 네트워크에서 유일하게 외부의 공격에 노출된 컴퓨터 시스템을 의미하며, 내 외부 네트워크간의 게이트웨이역할을 한다.


06 침입 탐지 시스템의 구조를 설명하시오.

침입 탐지 시스템은 침입을 탐지 할 수 있도록 방화벽과 내부 네트워크 사이에 위치한다. 


07 침입 방지 시스템의 비정상 탐지 기술과 공격 패턴 기반 기술에 대해 설명하시오.

  • 비정상 탐지 기술
    평상시를 기준으로 비정상적인 상황( 급격한 변화 등) 이 발생했을때 이를 알려주는 기술 이다. 
    평상적인 상태와 비교하여 이상 상태를 추정하므로 잘못 추정할 확률이 높다. 
  • 공격 패턴 기반 기술 
    이미 알려진 공격 패턴을 DB화 한 후 이에 해당하는 공격이 탐지 되면 알려주는 기술이다. 
    이상 상태를 잘못 탐지할 확률은 낮지만,  이미 알려진 공격 외에는 탐지 할 수 없다는 한계가 존재한다. 

08 방화벽, 침입 탐지 시스템, 침입 방지 시스템의 검사 영역에 대해 설명하시오.

방화벽과 침입 탐지 시스템, 침입 방지 시스템의 차이는 네트워크 장비에 유입되는 트래픽을 검사하는 영역의 차이에서 비롯된다. 

방화벽은 전송 계층과 네트워크 IP,Port 데이터를 기반으로 동작한다. 반면 침입 탐지 시스템과 침입 방지 시스템은 방화벽이 검사할 수 없는 응용계층의 데이터 까지 검사한다. 

침입 탐지 시스템과 침입 방지 시스템은 네트워크의 패킷 뿐만 아니라 헤더를 제외한 페이로드에 포함된 데이터까지 심층적으로 분석하는 기술인 DPI(Deep Packet Inspection) 를 사용한다. 

 

 

09 암호 보안 기술에 대해 설명하시오.

네트워크를 통해 전달되는 데이터는 제삼자에 의해 변경,위조 되거나 도청 당할 위험이 있다. 따라서 이러한 데이터를 암호화하고 수신 측에서는 암호화된 데이터를 복호화 하는 기술이 필요한데 이때 사용되는 것이 암호 시스템이다.

암호 시스템은 키(key)를 이용하여 메세지를 암호화 하고 복호화한다. 암호 보안 기술은 크게 비밀키 암호 시스템과 공개키 암호 시스템으로 구분된다. 또 다른 암호 보안 기술로는 인증,전자 서명등이 있다. 

 

  • 비밀키 암호 시스템
    암호키와 복호키를 동일하게 사용하여 두 개체가 같은 키를 공유하여 사용한다. 
    그러나 사용자가 많아지는 경우, 키 공유 문제가 발생할 수 있으며 수신자에게 키를 안전하게 보내는 것 또한 해결 해야할 과제가 된다. 
  • 공개키 암호 시스템 ( 비대칭형 암호화 시스템) 
    암호키와 복호키를 다르게 사용하므로 암호키를 통해 복호키를 계산할 수 없는 방식이다.암호키는 공개되어있으므로 누구나 암호화 할 수 있지만 복호키를 가진 사람만 암호문을 복호화 할 수 있다. 

    암호키(공개키) - 복호키(개인키) 

 


10 메일 보안 기술인 PGP와 PEM을 비교하여 설명하시오.

 

이메일은 편지와 달리 내용이 외부에 드러나기 때문에 보안에 취약하다. 그래서 편지의 내용이 봉투에 감싸져 안의 내용이 외부에 보이지 않도록 보호 되는 것 처럼, 이메일의 내용을 암호화 하여 외부로 부터 보호 할 수 있도록 하는 것이  PGM과 PEM이다. 편지 봉투의 경우 누군가 몰래 뜯고 다시 붙여 놓을 수 있지만, PGM과 PEM으로 암호화된 이메일은 특정 키가 있어야 안의 내용을 확인 할 수 있기 때문에 비밀성, 무결성, 인증 등의 기능을 지원한다.

PEM은 보안성이 높지만 구현이 어려워 널리 사용되지는 않는다. PGM의 경우 이보다는 보안성이 조금 취약하지만 구현이 쉽고 권한을 한곳에 집중하지 않고 사용자가 스스로 가질 수 있어 현재 가장 많이 사용되고 있다. 

 

 

 

11 송신자와 복호화 정보(키)를 공유할 필요가 없어 안전한 암호화 방식은 무엇인가?

 

공개키 암호화 방식 

 

01 네트워크 관리의 필요성을 설명하시오.

 

네트워크 관리는 제한된 인력과 비용을 활용하여 네트워크의 효율성과 생산성을 높일 수 있 도록 복잡한 네트워크를 제어하는 일련의 과정이다.

여기에는 네트워크에 분산된 각종 자원을 분배,관리,분석,평가 하는 기능이 포함된다.

네트워크 관리를 통해 자원을 더욱 효율적으로 사용하고 응답시간을 단축 시킬 수 있고,  네트워크 모니터링/트러블 슈팅/유지,보수등을 능률적으로 수행할 수 있다. 


02 다섯 가지 네트워크 관리 기능에 대해 설명하시오.

 

OSI표준에서 효율적인 네트워크 관리를 위해 5가지 기능을 제공한다. 

  1. 장애관리 : 비정상적인 동작을 발견하고 대처하는 기능
  2. 구성 관리: 문제의 원인을 제거하여 네트워크 장치가 정상적으로 동작하도록 시스템에 적절한 설정을 하는 것  
  3. 성능 관리: 네트워크의 동작 및 효율성을 평가하는 기능
  4. 계정 관리 : 소비하는 자원에 대한 모든 정보를 관리하고, 자원 사용량과 관련있는 네트워크 데이터를 수집하는 기능
  5. 보안 관리: 관리 대상에 대한 보안 기능을 제공

 

03 네트워크 분석 도구의 감시 기능과 해석 기능에 대해 설명하시오.

 

모니터링 기능 이란 트래픽 부하 측정, 사용하는 프로토콜 확인, 모니터링 결과 보고서 작성 기능 등을 제공한다. 모니터링은 실시간 모니터링과 비실시간 모니터링으로 구분되는데 실시간 모니터링의 경우 트래픽 수준을 실시간으로 살펴 볼 수 있고, 비실시간 모니터링 기능을 사용하면 트래픽 동향을 분석하여 문제 발생 시점을 알 수 있다. 

해석 기능 이란  네트워크에서 전송하는 프레임을 수집한 후 , 프레임 헤더에 있는 정보를 이용하여 프레임의 내용을 해석한다. 서로 다른 유형의 프로토콜 패킷을 속성별로 해석할 수 있다. 

 

 

04 SNMP에 대해 설명하시오.

 

분석 정보를 제공하는 에이전트와 분석 기능을 처리하는 네트워크 분석 소프트웨어 간에는 SNMP프로토콜을 이용하여 정보를 교환한다.  즉,  SNMP란 네트워크 시스템을 관리하는 프로토콜이다. SNMP는 네트워크 관리 소프트웨어를 실행하는 컴퓨터에서 라우터,서버 컴퓨터와 같은 네트워크 호스트를 관리하는 방법을 제공한다. 또한 관리 시스템과 에이전트의 분산 구조를 사용하여 서비스를 수행한다. 

 

05 인터넷 속도가 떨어질 때 나타날 수 있는 문제점과 해결 방법을 설명하시오.

인터넷 속도가 느려진 경우는 바이러스에 감염되었거나, 네트워크 과부화와 같은 다양한 원인이 존재한다. 

바이러스 검사를 시행해보거나 사용하지 않는 사이트를 닫고, 방문 기록을 지워 메모리 용량을 확보하는 것도 하나의 방법이 될 수 있다. 

 

06 파일을 다운로드하던 중 오류가 발생했을 때 나타날 수 있는 문제점과 해결 방법을 설명하시오.

  • 서버 측 오류  : 동시에 많은 사용자가 서버에게 자원을 요청하는 경우 오류가 발생할 수 있으며 이 경우 일정 시간이 지난후 다시 요청하는것이 좋다
  • 클라이언트 측 오류 : FTP 서버를 이용하여 파일 다운로드 한다면 다른 FTP 클라이언트 소프트웨어를 설치하여 사용할 것을 권장한다. 만약 이 경우에도 해결이 안된다면 윈도우를 재설치하는 방법이 있다 

 

07 동시에 여러 파일을 다운로드할 때 나타날 수 있는 문제점과 해결 방법을 설명하시오.

 

(1) 의도적인 제한
마이크로소프트사(MS)에서 의도적으로 두 개 이상의 파일은 다운로드할 수 없도록 설정하는 경우가 있다. 일반적으로 이 기능이 활성화되어 있지 않지만. 이 기능이 활성화되어 동시에 여러 파일을 다운받을 수 없을 때도 있다. 이 값의 변경은 레지스트리 편집기에서 키 값을 생성해 해결할 수 있다. 우선 바탕화면의 시작 -> 실행에서 “regedit" 를 입력하면 레지스트리 편집기가 실행되며, [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]순으로 클릭하면 해당되는 레지스트리 키를 생성할 수 있다. 여기서 마우스 오른쪽 버튼을 클릭하고, 새로 만들기에서 DWORD 값을 선택하면 된다. 데이터 종류는 DWORD를 선택해야 하며, 입력하는 값은 원하는 다운로드 창의 개수를 나타낸다. 즉 6을 입력하면 6개까지 동시에 다운로드할 수 있다.

(2) 웹 사이트에서의 제한
일부 웹 사이트에서는 트래픽 감소를 위해 한 번에 하나의 파일만 다운로드할 수 있도록 제한해 두는 경우가 있는데, 이런 경우는 한 번에 하나의 파일만 다운로드할 수밖에 없다

 

08 네트워크 관리자가 수동으로 고정 IP 주소를 설정하는 네트워크 환경 (학교)에서는 하나의 IP 주소를 컴퓨터 두 대에 입력하면 충돌 메시지가 발생하여 네트워크 통신이 되지 않는다. 이럴 때 충돌되는 컴퓨터를 찾는 명령어는 무엇인가?

 

nbstat -A (중복된 IP주소) 

 

09 컴퓨터에 트로이 목마 등 백도어 해킹 프로그램 등이 설치되어 정보를 빼내는지 확인하는 명령어는 무엇인가?

netstat -an 

 

10 특정 웹 사이트와의 접속이 느릴 때 내부 네트워크나 회선 구간 등을 확인하는 명령어는 무엇인가?

 

tracert 사이트 주소 

 

11 ARP 명령어 옵션에 대해 설명하시오.

 

  •    arp -a(추가), -s(수정), -d(삭제) 옵션
       - 인터넷 IP주소에서 물리주소로 변환된 값을 확인하고 수정(관리자 권한이 필요) 한다 
  • ARP 스푸핑 등 해킹/바이러스에 감염되면 사무실의 모든 컴퓨터의 ARP를 변조 한다. 그런 경우 arp -d 를 입력하여 ARP 값을 초기화 한다, 

 

01 인터넷에서 파일을 전송하는 기본 프로토콜에 대해 설명하시오.

파일을 전송하는 기본 프로토콜은 FTP이다.

FTP 클라이언트는 자신의 소스 포트 번호로 1023보다 큰 임의의 번호를 사용하고, FTP 서버는 포트 번호로 21을 사용한다.

FTP는 크게 두가지 형태로 구분할 수 있다. 하나는 서버에서 부여한 사용자 ID와 PW가 필요한 경우와 정보 공유 측면에서 누구나 접속이 가능한 경우이다.

FTP는 기본적인 파일 관리 명령어를 실행할 수 있으므로 파일 이름 수정,삭제,권한 변경등을 수행할 수 있다.

 

02 클라이언트의 웹 브라우저가 서버에 웹 서비스를 요청하면 서버가 적절한 응답을 하여 클라이언 트의 사용자에게 웹 페이지를 제공하는 서비스는 무엇인가?

HTTP 

 

03 HTTP 1.0과 HTTP 1.1의 차이점을 설명하시오.

HTTP 프로토콜은 데이터를 요청한 후 데이터를 전송 받고 나면 소켓 연결을 해제한다.

즉, 필요할때 마다 소켓을 연결하고 데이터를 전송받으면 바로 연결을 끊어버린다.

HTTP 1.0 에서는 문서에 이미지가 있으면 문서와 이미지를 받을 연결을 각각 설정한다. 하지만 HTTP 1.1 에서는 문서와 이미지를 받을 때 처음 연결 설정만 하고, 이미 연결한 소켓을 통해 데이터를 전송한다.

 

04 네트워크의 각 노드에 유일한 IP 주소를 자동으로 할당하고 관리하는 서비스는 무엇인가?

DHCP

 

05 ping 127.0.0.1 또는 ping localhost에 대해 설명하시오.

루프백 주소(loopback address)는 127.0.0.1이고 이름은 localhost이다.

루프백 주소에 ping 을 보내 TCP/IP 서비스가 제대로 동작하는지 확인하는 명령이다.

정상적인 응답시 해당 호스트 내부의 IP 설정에 문제가 없음을 의미한다.

 

 

06 응용 프로그램 계층 간의 통신을 제어하는 구조를 제공하기 위해 응용 프로그램 계층 사이의 접속을 설정• 유지 종료하는 역할을 하는 계층은 무엇인가?

셰션 계층

 

07 응용 계층에서 제공하는 프로토콜에 대해 설명하시오.

TCP 응용 계층 프로토콜인 FTP, HTTP, 텔넷, SMTP, POP3, IMAP와 UDP 응용 계층 프로토콜인 DHCP, SNMP 프로토콜이다.

 

08 Ping에서 사용하는 ICMP 에코 메시지에 대해 설명하시오.

에코 요청과 에코 응답 메시지가 담겨 있다.

ping 프로그램은 ARP 유틸리티를 이용하여 목적지 컴퓨터 이름을 IP 주소로 해석하고 그 판독 정보를 화면에 출력한다.

 

 

01  여러 포트를 이용하여 통신할 때 상위 계층에서는 TCP 포트 2번을 사용하여 하위 계층인 TCP 와 통신하려 하고, 하위 계층인 TCP는 통신 포트 4번을 사용하여 상위 계층과 통신하려 한다면 상위 계층과 하위 계층 간에 통신이 이루어지는가?

 

통신이 이뤄지지 않는다. 상위 계층과 하위 계층이 같은 포트번호를 사용해야 통신이 이뤄질 수 있다.

 

02 포트 번호가 80번이 아닌 웹 페이지에 접속하려면 웹 브라우저의 주소를 입력할 때 어떤 방법을 사용해야 하는가?

url 주소(웹 주소)  뒤에 포트 번호를 직접 지정해준다.

 

03 통신할 때 여러 웹 사이트에서 동시에 파일을 다운로드할 수 있는 이유는 무엇인가?

 TCP 프로토콜의 경우 포트 번호를 여러개 사용하여 상위 계층의 프로그램과 각각 따로 통신이 일어나기 때문에 동시에 파일을 다운로드 할 수 있다.

 

04 잘 알려진 포트 번호에 대해 설명하시오.

FTP:21,HTTP:80,SMTP:25,POP3:110,DNS:53,HTTP:443

 

05 TCP를 이용하여 두 장치 간에 전달되는 데이터의 단위는 무엇인가?

세그먼트 

 

06 전송 계층의 가장 대표적인 프로토콜은 무엇인가?

TCP,UDP

 

07 TCP가 상위 계층으로 데이터를 전송하거나 상위 계층에서 TCP로 데이터를 전송할 때 상호 간 에 사용하는 데이터의 이동 통로는 무엇인가?

포트 

 

08 HTTPS 애플리케이션에서 사용하는 잘 알려진 포트 번호는 무엇인가?

443

 

09 SYN와 ACK를 사용한 3-way 핸드셰이킹 과정에 대해 설명하시오.

신뢰할 수 있는 데이터를 송수신하기 위해서는 데이터의 연결 통로를 설정해야한다.

이와 같은 연결을 확립하기 위해 패킷 요청을 세번 교환하는 것을 3-way 핸드셰이킹이라 한다.

① 송신측은 수신측에게 연결 확립을 위한 SYN 요청을 보낸다.

② 수신측은 연결 요청에 대한 확인 응답으로 ACK를 보내면서 송신 측 컴퓨터로 부터 데이터 전송을 허가를 받기 위한 연결 확립 요청인 SYN을 보낸다.

③ 송신 측 컴퓨터는 수신 측 컴퓨터의 SYN에 대한 허가 응답으로 ACK를 보낸다.

 

10 TCP 헤더의 필드에 대해 설명하시오.

 

TCP의 헤더는 수신지까지 데이터를 제대로 전송하는데 필요한 정를 가지고 있다.

① 송신지와 수신지 포트 번호

   송신 프로그램의 포트번호와 수신 프로그램의 포트 번호에 대한 정보를 가지고 있다.

 

② 순서 번호

   TCP에서는 데이터를 분할하여 보내기 때문에 재조립을 위해 분할된 데이터에 번호를 부 여한다. 수신 측에서 분할된 데이터가 순서대로 도착하지 않을 수 있기 때문에 순서 번 호를 통해 데이터를 올바르게 재조립을 할 수 있다.

 

③ 확인 응답 번호

   세그먼트를 수신하는 노드가 상대편 노드에서 수신하려는 바이트의 번호

④ 헤더 길이,예약,코드 비트, 윈도우 크기

⑤ 검사합, 긴급 포인터

⑥ 옵션

 

 

01 웹 서비스의 동작 방식을 그림으로 설명하시오.


02 웹 사이트를 서비스하는 TCP 포트는 무엇인가?

80


03 WWW 서비스가 TCP/IP의 HITP 프로토콜을 사용하고 TCP 포트 번호는 80임을 확인하는 방법은 무엇인가?

lls 관리자 화면에서 확인 가능하다. 


04 FTP의 동작 과정을 설명하시오.

 

웹 서버에 FTP를 설정하면  클라이언트는 서버가 지정한 폴더에 파일을 업로드 하거나 , 폴더 안에 있는 파일을 다운로드 할 수 있다.

네트워크의 클라이언트는 FTP 서버의 홈 디렉터리로 지정한 폴더를 공유하여 사용할 수 있다. 

익명의 FTP 사이트는 정보 공유가 목적이기 때문에 모든 컴퓨터의 사용자가 지정된 폴더에서 파일을 다운로드 할 수 있다. 


05 인터넷에서 클라이언트가 메일을 송수신하는 데 필요한 서비스는 무엇인가?

SMTP , POP3

+ Recent posts