1. 입출력 스트림 - 프로그램을 기준으로 데이터가 들어오면 입력 스트립이고, 데이터가 나가면 출력 스트림이다.
답 : 1
하나의 스트림으로 입력과 출력이 동시에 가능하지 않다.
//스트림의 특성이 단방향이므로 하나의 스트림으로 입력과 출력을 모두 할 수 없다.
2. Reader - 문자 기반 입력 스트림의 최상위 클래스로 추상 클래스이다.
답 : 1
이미지 데이터는 InputStream으로 읽을 수 있으나 Reader로는 읽을 수 없다.
//바이트 기반 스트림(InputStream)은 그림, 멀티미디어, 문자 등 모든 종류의 데이터를 받고 보낼 수 있으나, 문자 기반 스트림(Reader)은 오로지 문자만 받고 보낼 수 있도록 특화되어 있다.
3. InputStream의 read(byte[], b, int off, int len) 메소드
답 : 4
세 번째 매개값 len은 첫 번째 매개값 b에서 데이터가 저장될 마지막 인덱스가 아니다.
//입력 스트림부터 len개의 바이트만큼 읽고, 매개값으로 주어진 바이트 배열 b[off]부터 len개까지 저장한다.
4. flush() - 버퍼에 잔류하는 모든 바이트를 출력한다.
답 : 1
5. 보조 스트림 - 다른 스트림과 연결되어 여러 가지 편리한 기능을 제공해주는 스트림을 말한다.
답 : 3
DataInputSream은 기본 데이터 타입의 값을 입출력하기 위한 보조 스트림이다.
6. ObjectInputStream, ObjectOutputStream - ObjectInputStream은 바이트 출력 스트림과 연결되어 객체를 직렬화하는 역할을 하고, ObjectInputStream은 바이트 입력 스트림과 연결되어 객체로 역직렬화하는 역할을 한다.
답 : 3
클래스의 serialVersinUID는 입출력할 때 모두 같아야 한다.
7.
package verify.exam07;
import java.io.BufferedReader;
import java.io.FileReader;
public class AddLineNumberExample2 {
public static void main(String[] args) throws Exception {
String filePath = "C:\Users\new\Desktop\NCS JAVA\origin thisjava ex\chap18\src\sec05\exam04_bufferedreader\BufferedReaderExample.java";
FileReader fr = new FileReader(filePath);
BufferedReader br = new BufferedReader (fr);
//방법1
int rowNumber = 0;
String rowData;
while((rowData = br.readLine())!=null) {
System.out.println(++rowNumber + ": " + rowData);
}
br.close(); fr.close();
}
}
//방법 2
int rowNumber = 1;
String rowData;
while((rowData = br.readLine())!=null) {
System.out.println(rowNumber++ + ": " + rowData);
}
br.close(); fr.close();
}
}
8. TCP와 UDP - TCP는 연결 지향적 프로토콜이고, UDP는 비연결 지향적 프로토콜이다.
답 : 2
UDP는 데이터가 순서대로 전달되지 않으며, 데이터 손실이 발생한다.
//UDP는 연결 과정이 없기 때문에 TCP보다는 빠른 전송을 할 수 있지만 데이터 전달의 신뢰성은 떨어진다. 먼저 보낸 패킷이 느린 선로를 통해 전송될 경우 나중에 보낸 패킷보다 늦게 도착할 수 있으며 일부 패킷은 잘못된 선로로 전송되어 잃어버릴 수도 있다.
9. TCP 클라이언트읭 연결 요청과 수락
답 :
Soket socket = new Socket("localhost", 5001);
Soket socket = serverSocket.accept();
10. TCP 서버 연결 후 Socket으로 데이터를 입출력 하는 과정
답 :
InputStream(읽음) OutputStream(보냄)
OutputStrean(읽음) InputStream(보냄)
11.
package verify.exam11;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Arrays;
public class ClientExample2 {
public static void main(String[] args) throws Exception {
Socket socket = new Socket("localhost", 5001);
OutputStream os = socket.getOutputStream();
String filePath = "C:\\Users\\new\\Desktop\\NCS JAVA\\origin thisjava ex\\chap18\\src\\sec04\\exam03_fileoutputstream\\house.jpg";
File file = new File(filePath);
String fileName = file.getName();
byte[] fileNameBytes = fileName.getBytes("UTP-8");
fileNameBytes = Arrays.copyOf(fileNameBytes, 100);
os.write(fileNameBytes);
System.out.println("[파일 보내기 시작] " + fileName);
FileInputStream fis = new FileInputStream(file);
byte[] bytes = new byte[1000];
int readByteCount = -1;
while((readByteCount = fis.read(bytes)) != -1) {
os.write(bytes, 0, readByteCount);
}
os.flush();
System.out.println("[파일 보내기 완료]");
fis.close();
os.close();
socket.close();
}
}
package verify.exam11;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerExample2 {
public static void main(String[] args) throws Exception {
ServerSocket serverSocket = new ServerSocket();
serverSocket.bind(new InetSocketAddress("localhost", 5001));
System.out.println("[서버 시작]");
while(true) {
try {
Socket socket = serverSocket.accept();
InputStream is = socket.getInputStream();
byte[] bytes = new byte[1000];
int readByteCount = -1;
is.read(bytes, 0, 100);
String fileName = new String(bytes, 0, 100, "UTF-8");
fileName = fileName.trim();
System.out.println("[파일 받기 시작] " + fileName);
FileOutputStream fos = new FileOutputStream("C:Temp/" + fileName);
while(((readByteCount = is.read(bytes))) != -1) {
fos.write(bytes, 0, readByteCount);
}
fos.flush();
System.out.println("[파일 받기 완료]");
fos.close();
is.close();
socket.close();
} catch(Exception e) {
break;
}
}
serverSocket.close();
System.out.println("[서버 종료]");
}
}
'JAVA' 카테고리의 다른 글
이것이 자바다 3장 확인 문제 풀이 (연산자) (0) | 2022.10.02 |
---|---|
이것이 자바다 1장 확인 문제 풀이(자바 시작하기) (1) | 2022.10.01 |
이것이 자바다 2장 확인 문제 풀이 (변수와 타입) (0) | 2022.09.21 |
이것이 자바다 6장 확인 문제 풀이(클래스) (0) | 2022.09.16 |
이것이 자바다 15장 확인문제 풀이 (컬렉션 프레임워크) (0) | 2022.09.16 |