본문 바로가기

Java

(80)
자바 - TCP 소켓 프로그래밍, Socket과 ServerSocket 자바 - TCP 소켓 프로그래밍, Socket과 ServerSocket에 대해서 알아보자 TCP 소켓 프로그래밍 앞서 살펴본 것과 같이 TCP소켓 프로그래밍은 클라이언트와 서버간의 일대일 통신이다. 먼저 서버 프로그램이 실행되어 클라이언트 프로그램의 연결요청을 기다리고 있어야한다. 서버프로그램과 클라이언트 프로그램간의 통신과정을 단계별로 보면 아래와 같다. 서버 프로그램에서는 서버소켓을 사용해서 서버 컴퓨터의 특정 포트에서 클라이언트의 연결요청을 처리할 준비를 한다. 클라이언트 프로그램은 접속할 서버의 IP주소와 포트 정보를 가지고 소켓을 생성해서 서버에 연결을 요청한다. 서버소켓은 클라이언트의 연결요청을 받으면 서버에 새로운 소켓을 생성해서 클라이언트의 소켓과 연결되도록 한다. 이제 클라이언트의 소켓과..
자바 - 소켓(socket) 프로그래밍, TCP와 UDP 자바 - 소켓(socket) 프로그래밍, TCP와 UDP에 대해서 알아보자 소켓(socket) 프로그래밍 소켓 프로그래밍은 소켓을 이용한 통신 프로그래밍을 뜻한다. 소켓(socket)이란 프로세스 간의 통신에 사용되는 양쪽 끝단(endpoint)을 의미한다. 프로세스간의 통신을 위해서는 그 무언가가 필요한데 그게 바로 소켓이다. 자바에서는 java.net패키지를 통해서 소켓 프로그래밍을 지원하는데, 소켓통신에 사용되는 프로토콜에 따라 다른 종류의 소켓을 구현하여 제공한다. TCP와 UDP TCP/IP 프로토콜은 이기종 시스템간의 통신을 위한 표준 프로토콜로 프로토콜의 집합이다. TCP와 UDP모두 TCP/IP프로토콜(TCP/IP protocol suites)에 포함되어 있으며, OSI 7계층의 전송계층(..
자바 - InetAddress 클래스와 URL(Uniform Resource Locator) 자바 - InetAddress 클래스에 대해서 알아보자. InetAddress 클래스 자바에서 IP주소를 다루기 위한 클래스로 InetAddress를 제공하며 아래와 같은 메소드가 정의되어 있다. byte[] getAddress() : IP주소를 byte배열로 반환한다. static InetAddress[] getAllByName(String host) : 도메인명(host)에 지정된 모든 호스트의 IP주소를 배열에 담아 반환한다. static InetAddress getByAddress(byte[] addr) : byte배열을 통해 IP주소를 얻는다. static InetAddress getByName(String host) : FQND(Fully Qualified Domain Name)을 반환한다. ..
자바 - 스트림을 이용해 파일 복사(카피)하기 자바에서 스트림을 이용해 파일 복사(카피)해보자. ex) 파일 복사하기 1 ex) 파일 복사하기 2-1 ex) 파일 복사하기 2-2
자바 - 직렬화(serialization), ObjectInputStream&ObjectOutputStream 자바 직렬화(serialization)에 대해서 알아보자. 직렬화(serialization) 직렬화란 객체를 데이터 스트림으로 만드는 것을 뜻한다. 객체에 저장된 데이터를 스트림에 쓰기(write)위해 연속적인 데이터로 변환하는것을 말한다. 반대로 스트림으로 부터 데이터를 읽어서 객체를 만드는 것을 역직렬화(deserialization)라고 한다. 객체는 클래스에 정의된 인스턴스 변수의 집합이다. 그래서 객체를 저장한다는 것은 객체의 모든 인스턴스 변수의 값을 저장한다는 것과 같은 의미이다. 또한 데이터들이 개별적으로 전송되는 것이 아니고 클래스 내부에 설계된 멤버들이 객체 단위로 파일에 기록하거나 쓴다는 의미이다. 객체를 저장하거나 전송하려면 직렬화가 필요하다. ObjectInputStream&Obje..
자바 - InputStreamReader&OutputStreamWriter , BufferedReader&BufferedWriter, FileReader&FileWriter 자바의 여러가지 Reader&Writer를 알아보자. InputStreamReader&OutputStreamWriter 바이트기반 스트림을 문자기반 스트림으로 연결시켜주는 역할을 한다. 그리고 바이트기반 스트림의 데이터를 지정된 인코딩의 문자데이터로 변환하는 작업을 수행한다. InputStreamReader는 Reader로부터 상속된 클래스로서 바이트 스트림을 문자 스트림으로 변환하는 기능을 제공해 준다. BufferedReader&BufferedWriter 버퍼를 이용해서 입출력의 효율을 높일 수 있도록 해주는 역할을 한다. 버퍼를 이용하면 입출력의 효율이 비교할 수 없을 정도로 좋아지기 때문에 사용하는 것이 좋다. BufferedReader는 Reader로 부터 상속된 클래스로 문자, 배열, 행을 버..
자바 - File, FileInputStream, FileOutputStream 자바 File, FileInputStream, FileOutputStream에 대해서 알아보자. File클래스 파일은 기본적이면서도 가장 많이 사용되는 입출력 대상이기 때문에 중요하다. 자바에서는 File클래스를 통해서 파일과 디렉토리를 다룰 수 있도록 하고있다. 그래서 File인스턴스는 파일일 수도 있고 디렉토리일 수도 있다. File클래스 생성자 File(String fileName) : 주어진 문자열(fileName)을 이름으로 갖는 파일을 위한 File인스턴스를 생성한다. 파일 뿐만 아니라 디렉토리도 같은 방법으로 다룬다. 여기서 fileName은 주로 경로(path)를 포함해서 지정해주지만, 파일 이름만 사용해도 되는데 이 경우 프로그램이 실행되는 위치가 경로(path)로 간주된다. File(S..
자바-InputStream과 OutputStream 자바 InputStream과 OutputStream에 대해서 알아보자. InputStream과 OutputStream은 바이트 기반 스트림이다. 바이트 기반은 입출력의 단위가 1 byte라는 뜻이다. InputStream은 바이트 입력 스트림의 최상위 추상클래스이며, OutputStream은 바이트 출력 스트림의 최상위 추상 클래스이다. ex) InputStream 예제 InputStream타입 myIn에 System.in를 대입해 키보드 입력장치와 연결하고, data에 myIn.read()로 한 바이트 씩 읽어들인다. 그리고 System.out.write로 char타입으로 data를 출력하며, read()가 더이상 읽어들일 값이 없으면 -1을 반환해서 무한반복이 종료된다. ex)OutputStream ..