Skip to content

Java_11 #19

@Sam1000won

Description

@Sam1000won

Java 입출력 및 네트워크 프로그래밍

1. 예외 및 클래스 설명

  • IOException: 입출력 작업에서 발생하는 예외를 처리하기 위해 사용
  • InetSocketAddress: IP 주소와 포트 번호를 함께 다루기 위해 사용
  • ServerSocket: 서버 소켓을 다루기 위해 사용
  • Socket: 클라이언트 소켓을 다루기 위해 사용
  • ObjectInputStream: 객체를 입력 스트림으로 읽기 위해 사용
  • ObjectOutputStream: 객체를 출력 스트림으로 쓰기 위해 사용
  • InputStream: 바이트 입력을 위한 기본 클래스.
  • OutputStream: 바이트 출력을 위한 기본 클래스.

2. 네트워크 주소 처리

  • InetAddress: 네트워크 주소를 다루기 위해 사용
  • UnknownHostException: 호스트를 찾을 수 없을 때 발생하는 예외
  • getLocalHost(): 로컬 호스트를 가져옴
  • getHostAddress(): 로컬 IP 주소를 출력
  • getByName(도메인): 해당 도메인에 대한 InetAddress를 가져옴
for (InetAddress ip : addrs) {
    System.out.println(ip.getHostAddress());
}

3. 메시지 읽기 예시

InputStream is = socket.getInputStream(); // 소켓으로부터 입력 스트림을 가져옴
ObjectInputStream ois = new ObjectInputStream(is); // 입력 스트림을 ObjectInputStream으로 감쌈
String msg = ois.readUTF(); // 서버로부터 메시지를 읽음
System.out.println("[server 메시지] " + msg); // 읽어온 메시지를 출력

5. 메시지 보내기 예시

OutputStream os = socket.getOutputStream(); // 소켓으로부터 출력 스트림을 가져옴
ObjectOutputStream oos = new ObjectOutputStream(os); // 출력 스트림을 ObjectOutputStream으로 감쌈
flush(): 출력 스트림의 내용을 즉시 전송

6. 파일 스트림 준비 예시

// 보조 스트림 준비
BufferedInputStream bis = new BufferedInputStream(fis);

7. 소켓을 통한 통신 준비

// 6-1. FileInputStream 준비
File file = new File("C:\\img\\temp\\img1234.gif");
FileInputStream fis = new FileInputStream(file);
  • DataInputStream: 데이터 입력을 위한 스트림.
  • DataOutputStream: 데이터 출력을 위한 스트림.

8. 스레드 생성자

  • Thread(): 새로운 스레드 객체 할당.
  • Thread(String name): 새로운 스레드 객체가 할당되며, 스레드 이름은 name으로 설정됨.
  • Thread(Runnable target): Runnable target이 구현된 스레드 객체 할당.
  • Thread(Runnable target, String name): Runnable target이 구현된 스레드 객체가 할당되면 스레드 이름은 name으로 설정됨.

9. 스레드 메소드

  • void run(): 스레드의 실행 코드가 작성되는 메소드로 사용자는 run() 메소드를 오버라이드 하여 사용
  • void start(): 스레드가 시작되도록 요청하는 메소드로 JVM은 해당 스레드의 run() 메소드를 호출.
  • void interrupt(): 스레드를 중지.
  • void join(): 이 스레드가 끝날 때까지 대기.
  • void join(long millis): 최대 millis 시간 동안 이 스레드가 끝날 때까지 대기.
  • static void sleep(long millis): millis 시간 동안 현재 스레드를 일시 중지.
  • static void yield(): 현재 스레드의 실행 시간을 다른 스레드에게 양보.
  • static Thread currentThread(): 현재 실행 중인 스레드 객체의 참조값을 반환.
  • long getId(): 스레드의 ID를 반환
  • String getName(): 스레드의 이름을 반환.
  • int getPriority(): 스레드의 우선순위 값을 반환. (우선순위 범위: 1 ~ 10)
  • Thread.State getState(): 스레드의 state 값을 반환.
  • ThreadGroup getThreadGroup(): 스레드가 속한 스레드 그룹을 반환.
  • static boolean interrupted(): 현재 스레드의 interrupted 여부를 반환.
  • boolean isInterrupted(): 이 스레드의 interrupted 여부를 반환.
  • boolean isAlive(): 이 스레드가 살아있는지 여부를 반환.
  • boolean isDaemon(): 이 스레드가 데몬 스레드인지 여부를 반환.
  • void setDaemon(boolean on): 이 스레드를 데몬 스레드로 변경.
  • void setName(String name): 이 스레드의 이름을 name으로 변경.
  • void setPriority(int newPriority): 이 스레드의 우선순위를 newPriority로 변경.
  • String toString(): 이 스레드의 이름, 우선순위, 스레드 그룹 등의 정보를 담은 문자열을 반환.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions