본문 바로가기

스트림

자바 네트워크(Network) - TCP / IP 를 이용한 예제 2 이번에는 저번 소스를 이용해서 서버에서 요청된 클라이언트 정보를 한번 알아 보자. 우선 서버에 접속된 클라이언트의 아이피와 포트번호를 알아보자. 예제를 보면 client .getInetAddress()로 클라이언트 아이피와 getPort()로 클라이언트포트 번호를 알 수 있다. 클라이언트 포트번호는 랜덤으로 바뀐다.(참고 서버 소켓 선언시 생성자 파마리커 2222는 서버 포트 번호이다) 그리고 난후 클라이언트가 접속을 했으면 클라이언트에게 접속했다는 메세지를 전해 주기 위해서 Outputstream 객체와 DataOutputStream 객체(한글이기때문 2바이트) 사용했다. 클라이언트에서는 이를 InputStream과 DataInputStream으로 받으면 된다. 그럼 클라이언트 예제를 보자. 클라이언트.. 더보기
JAVA I/O (자바입출력) - 객체 직렬화 (ObjectInputStream /ObjectOutputStream) 객체 직렬화는 생성한 객체를 바이트 형태로 다른 저장 장치등으로 내보내는 방법을 말한다. 예제로 확인하자. 우선 저장할 클래스를 하나 만들어 보자. 사원정보에 대한 클래스이다. 중요한것은 이 클래스를 직렬화 하겠다는것을 명시해야 하는데 이를 위해서 꼭 해당 클래스에 Serializable을 implements 받아야 한다. 그러면 사원정보 클래스를 직렬화하여 저장하는 클래스를 보자. 객체를 저장하는거지만 이것 또한 기본 바탕은 바이트 스트림이다. 따라서 저장할 파일을 지정하고 FileOutputStream 객체를 생성한 후 오브젝트 저장시 사용되는 ObjectOutputStream을 이용해서 객체 내용을 바이트 타입으로 파일로 내보낸다. 그리고 난후 writeObject(object reference)를.. 더보기
JAVA I/O (자바입출력) - PrintStream / PrintWrite 클래스 PrintStream이란 무엇가 출력장치에 상관없이 조금더 편하고 쉽게 출력을 도와주는 스트림 클래스이다. 예를 들어 print()나 println()도 다 여기 범주에 포함된다. 그런데 그 만큼 사용자 입장에서 만든것이기 때문에 정교하게 하는것은 약간 무리다. 우선 처음 해야 할 일은 자바 API를 보자. http://docs.oracle.com/javase/7/docs/api/ 예제를 살펴보자. 이전에 했던 스트림읽기와 차이점이 별로 없다. 파일을 읽어서 버퍼에 넣고 while문으로 돌려서 찍는다. 항상 close()를 잊지 말자. 두번째 예제를 보자 저장된 파일을 읽어다가 화면에다 찍는것이다. 보면 PrintWriter함수 중에는 printf라는 메소드가 있는데 이는 표준 출력함수다. 문자열이나 특.. 더보기
JAVA I/O (자바입출력) - PipedInputStream과 PipedOutputStream 도스나 유닉스의 명령어를 생각하면 쉽다. 예를 들어 도스에서 'type 파일명 | sort' 이런 것과 같다. PipedInputStream과 PipedOutputStream을 보기전에 일단 자바API를 보자 http://docs.oracle.com/javase/7/docs/api/ 이중에서 유의깊게 볼 메소드 connect라는 메소드다..말 그대로 연결. 아래 예제는 Thread를 이용하였다. 결론은 쓰레드 두개를 생성해서 키보드로 친것을 파이프 연결해서 화면으로 뱉어 내겠다는 것이다. package ck.io; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PipedIn.. 더보기
JAVA I/O (자바입출력) - ByteArrayInputStream 과 ByteArrayOutputStream ByteArrayInputStream 과 ByteArrayOutputStream는 역시 바이트 스트림 방식이다. 이름 그래도 ByteArray단위로 읽고 출력한다. 한 바이트를 단위가 아니고 우선 자바 API를 보자. 해당 클래스에 메소드를 확인하는건 중요하다. http://docs.oracle.com/javase/7/docs/api/ 예제로 보자 더보기
JAVA I/O (자바입출력) - 자바 스트림(Stream) A. 스트림이란 1. 스트림(Stream)은 파일이나 키보드, 모니터 등의 입출력 장치나 네트워크, 메모리등으로부터 데이터를 입출력할 때 사용하는 처리를 정의해 둔 것 2. 스트림이라는 영어 어원처럼 (시냇물) 양방향이 아니고 단방향이다. 데이터 처리가 많을때는 지연 될 수도 있다. B. Stream의 종류 1. 바이트 스트림(byte stream) - 1바이트씩 전송 * 존재 이유 : 컴퓨터는 2진수로 데이터 처리, 진수라는것은 bit를 의미 8bit가 1byte이므로 바이트 스트림 존재 * 주로 하드웨어 접근 할때는 바이트 스트림으로 처리 * 가장 큰 부모 클래스(추상) : InputStream, OutputStream 2. 캐릭터 스트림(character stream) - 2바이트씩 전송 * 문자 .. 더보기