11월 21일 - 수업 21일차

수아레스·2022년 11월 21일
post-thumbnail

1. OSI 7 계층이란?

네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것


1. 물리 계층
2. 데이터 링크 계층
3. 네트워크 계층
4. 전송 계층
5. 세션 계층
6. 표현 계층
7. 응용 계층

2. Socket에 대하여 설명하시오.

네트워크 환경에 연결할 수 있게 만들어진 연결부

TCP/IP 기반 네트워크 통신에서 데이터 송수신의 마지막 접점.
소켓통신이란 이러한 소켓을 통해 서버-클라이언트 간 데이터를 주고받는 양방향 연결 지향성 통신을 말한다. 보통 지속적으로 연결을 유지하면서 실시간으로 데이터를 주고받아야하는 경우에 사용된다.

참고 링크: https://onlyfor-me-blog.tistory.com/449
https://jink1982.tistory.com/182

3. 서버와 클라이언트에 대하여 설명하시오.

서버: 데이터를 제공하는 쪽
클라이언트: 데이터를 요구하여 제공받는 쪽

<서버 소켓 구현하기>

<클라이언트 소켓 구현하기>

4. Input(Output)Stream과 문자 스트림의 차이에 대하여 설명하시오.



IO Stream의 종류

1) 바이트 입출력 스트림

  • 입출력 되는 데이터를 단순 바이트의 스트림으로 처리. 1byte 단위 이다. 영상이나 음악을 처리할때 바이트 스트림을 이용
    ex) binary 파일을 읽는 입력 스트림

2) 문자 입출력 스트림

  • 문자만 입출력 하는 스트림
    문자가 아닌 binary 데이터는 스트림에서 처리하지 못함.
    2byte 단위 통로이다.
    ex) 텍스트 파일을 읽는 입력 스트림

cf. 영어 abc는 문자이긴 하나 1단어당 1byte여서 바이트 입출력 스트림을 이용해도 된다. 단, 한글은 2byte여서 무조건 문자 입출력 스트림만 사용 할수 있다.




출처: https://velog.io/@yeppi/패키지3-java.io-의-입출력스트림-InputStream-OutputStream-Reader-Writer

5. IO 스트림을 이용하여 아래와 같이 프로그램을 완성하시오.

=================
대상 파일: a.java
사본 이름: x:\b.java

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Scanner;

public class IOStream {
   public static void main(String[] args) {
      /*=================
      대상 파일: a.java
      사본 이름: x:\b.java*/
      
      Scanner sc = new Scanner(System.in);
      System.out.println("==================");
      System.out.print("대상 파일 : ");
      String src = sc.nextLine();
      System.out.print("사본 이름 : ");
      String dst = sc.nextLine();
      
      try(InputStream in = new FileInputStream(src);
            OutputStream out = new FileOutputStream(dst)){
   
      int data;
      while (true) {
         data = in.read();
         if(data == -1)
            break;
         out.write(data);
      }
      }
      catch (IOException e) {
         e.printStackTrace();
      }
      System.out.println("파일 복사가 완료되었습니다.");
      sc.close();
   }
}

6. String.txt 파일에 아래의 문구가 들어가도록 짜시오.

공부에 있어서 돈이 꼭 필요한 것은 아니다.
Life is long if you know how to use it.

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class P42 {
	public static void main(String[] args) {
		String ks = "공부에 있어서 돈이 꼭 필요한 것은 아니다.";
		String es = "Life is long if you know how to use it";
		
		try(BufferedWriter bw = new BufferedWriter(new FileWriter("String.txt"))){
			bw.write(ks, 0, ks.length());
			bw.newLine();
			bw.write(es, 0, es.length());
		}
		catch (IOException e) {
			e.printStackTrace();
		}
	}
}

7. String.txt을 읽어들여 화면에 아래와 같이 출력 되도록 하시오.

공부에 있어서 돈이 꼭 필요한 것은 아니다.
Life is long if you know how to use it.

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class StringReader {
	public static void main(String[] args) {
		try(BufferedReader br = new BufferedReader(new FileReader("String.txt"))) {
			String str;
			while(true) {
				str = br.readLine();   // 한 문장 읽어 들이기
				if(str == null)
					break;
				System.out.println(str);
			}
		}
		catch(IOException e) {
			e.printStackTrace();
		}
	}
}

8. data.txt 파일에 A부터 Z까지의 글자들이 들어 가도록 하시오.

import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

public class SimpleWriter {
	public static void main(String[] args) {
		try (Writer out = new FileWriter("data.txt")) {	
			for (int i = 65; i < 65+26; i++) {
				out.write(i);
			}
		} 
		catch (IOException e) {
			e.printStackTrace();
		}
	}
}
profile
띵호와

0개의 댓글