[기초]byte,text,file,object 입출력 과 자바 네트워크(TCP,UDP,Muticast,RMI)

2010. 1. 31. 10:09Java


■ File 클래스
 - 시스템에 존재하는 자원에 접근하여 자바 프로그램에서 객체로 이용할 수 있는 클래스

■ File 클래스의 APIs (java.io.*)
 - File(File,String)
 - File(String)
 - File(String,String)
 - File(URL)

■ 1byte 입력과 출력

1byte 출력
 FileOutputStream fos = new FileOupputSream(FileDescriptor.out); //File 객체 , Network 객체
 BufferedOutputStream bos = new BufferedOutputStream(fos,byte수);
 DataOutputStream dos = new DataOutputStream(bos); ->메서드

1byte 입력
FileInputStream fis = new FileInputStream(FileDescriptor.in); // File 객체, Nexwork 객체
BufferedInputStream bis = new BufferedInputStream(fis, byte수);
DataInputStream dis = new DataInputStream(bis);

■  텍스트 입력과 출력
텍스트 출력
OutputStreamWriter osw = new OutputStreamWriter(Sstem.out);
//Network OuputStream 객체
//FileWriter osw = new FileWriter(파일객체 or 문자열)

텍스트 입력
OuputStreamWriter ow = new OutputStreamWrite(System.out);
BufferedWriter bw = new BufferedWriter(ow);
PrintWriter pw = new PrintWriter(bw);

FileWriter fw = new FileWriter(new File("ccc.txt"));
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter pw = new PrintWriter(bw);

InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
PrintReader pr = new PrintReader(br);

FileReader fr = new FileReader(new File("ccc.txt"));
BufferedReader br = new BufferedReader(fr);
PrintReader pr = new PrintReader(br);

■ * java.util.Scanner 클래스
String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input);
s.useDelimiter("\\s*fish\\s*");
System.out.println(s.nextInt());
System.out.println(s.nextInt());
System.out.println(s.next());
System.out.println(s.next());
s.close();

■ 객체 입력과 출력
객체 출력
FileOutputStream fos = new FileOutputStream(파일객체 or 문자열);
//Network OutputStream 객체 (직렬화 를 반드시 써야 한다)
BufferedOutputStreamm bos = new BufferedOutputStream(fos);
ObjectOutputStream oos = new ObjectOutputStream(bos);

객체 입력
FileInputStream fos = new FileInputStream(파일객체 or 문자열);
//Network InputStream 객체 (직렬화 를 반드시 써야 한다)
BufferedInputStreamm bos = new BufferedInputStream(fos);
ObjectInputStream oos = new ObjectInputStream(bos);

■  자바 네트워크
프로그램 네트워크의 정의
 - 데이터를 교환을 목적으로 로컬 PC 와 원격 PC 사이의 데이터 흐름을 나타내는 구조
네트워크의 필수 조건
 - IP 주소 : PC 고유의 주소 (219.255.61.191)
 - Port 번호 : 0 ~ 65535
 - 프로토콜 : TCP , UDP <- 약속
 - 기타 :
   subnet mask (255.255.255.0) : 같은 게이트 웨이 안에 있는지 확인 (End 연산)
   dns
   gateway (219.255.61.1)

   컴퓨터 <-> router <->  gateway INTERNET gateway <-> router <-> 컴퓨터

■ TCP 통신
 - TCP 통신의 장점과 단점
  장점 : 상대방의 데이터 전달 여부를 곧바로 확인이 가능하다.
  단점 : 부하가 많이 걸린다. 지속적인 연결 유지
  (Connection을 유지 시켜줘야 한다)

 - 자바의 TCP 구현을 위한 클래스들
 InetAddress : 주소 관련 클래스 (주소가 들어가는 어디서나 사용 가능)
 Socket ,  ServerSocket

■ URL 통신
 URL 클래스
 URLConnection 클래스

■  UDP
UDP통신의 장점과 단점
편지 라고 생각하면 된다.
부하가 발생 없다
보낸 데이터의 소실 여부 확인 불가
UDP를 위한 자바의 클래스들 - DatagramPacket ,DatagramSocket

■ Multicast
 - Unicast , Broadcast , Multicast 의 구분
  x.x.x.255 -> 1~254까지 전부 전송
 - Multicast를 위한 자바의 클래스들
(D타입 클래스) 242 ~ 239 번으로 지원받은... Multicast 
 : DatagramPacket 클래스
 - MulticastSocket 클래스

■ RMI
- Remote Method Invocation의 약자
- 원격 지역의 메서드 호출로 실행

■ RMI 프로그램 작성 방법 및 실행
- 원격 인터페이스 작성
-서버측 구현 클래스 작성
-Stub 클래스 생성( rmic 원하는JAVA )
-서버측 바인딩 클래스 작성
-클라이언트 lookup 클래스 작성
-rmiregistry.exe 및 바인딩 클래스 실행 (start rmiregistry.exe)
-lookup 클래스 실행