유니캐스팅과 멀티캐스팅 1. 클라이언트와 서버간의 지속적으로 일대 일로 통신하는 개념을 유니 캐스팅이라고 합니다. 2. 일대 다의 통신을 멀티 캐스팅이라고 합니다. 유니 캐스팅 유니 캐스팅을 구현하기 위해서는 필수 조건이 서버측에 스레드를 생성해서 TCP 소켓을 유지 해야 합니다. 멀티 캐스팅 유니 캐스트 모델은 실시간 프로그램에서 서버의 정보를 모든 클라이언트가 공유할 때 문제점이 있는데 이런 문제를 해결할 수 있는 방법이 일대 다 전송을 지원하는 멀티 캐스팅 방법입니다. 한명의 클라이언트가 서버의 정보를 변경했을 경우 모든 클라이언트에게 전송함으로써 서로가 변경된 정보를 공유할 수 있는 애플리케이션을 만들 때 적합합니다. 또한 멀티 캐스팅 프로그램을 작성하기 위해서는 유니캐스트에서 생성된 스레드를 저..
UDP(User Datagram Protocol 1. UDP는 비 연결 지향이고, IP 위에 매우 얇은 레이어로 구성되어 있습니다. 2. UDP를 사용하는 애플리케이션은 TCP 프로그램에 비해 제어를 할 수 있는 부분이 적습니다. 3. UDP는 데이터를 전송할 때에 데이터가 잘 도착했는지 알아낼 방법이 없으며, 데이터를 보낸 순서대로 도착한다는 보장도 할 수 없습니다. 4. UDP는 TCP에 비해 훨씬 빠르게 전달된다는 장점이 있습니다. DatagramPacket 클래스 1. UDP 데이터그램은 java.net.DatagramPacket 클래스로 추상화한 것입니다. 2. DatagramPacket 클래스는 애플리케이션에서 주고 받을 데이터와 관련된 클래스이고, DatagramSocket 클래스는 실제 데..
TCP 통신방식이란? 1. TCP란 소켓 프로그래밍 중의 하나로 스트림 통신 프로토콜이라고 부르며, 양쪽의 소켓이 연결된상태여야만 가능 하기 때문에 연결지향 프로토콜이라고도 합니다. 2. TCP 프로토콜은 신뢰성 있는 프로토콜이기 때문에, 송신한 쪽의 데이터가 수신 측에 차례대로, 중간에 유실되는 일 없이 도착 하는 것을 의미합니다. 그러려면 수신 측과 송신 측이 미리 연결을 맺고 연결된 순서대로 데이터를 교환해야 합니다. 3. 연결지향 방식은, 한번 연결되면 연결이 끊어질 때까지는 송신한 데이터가 차례대로 목적지의 소켓에 전달되는 신뢰성 있는 통신이 가능합니다. 4. 이렇게 신뢰성 있는 TCP 연결을 하기 위해서는 TCP 프로그래밍에서 사용하는 라이브러리의 사용 방법과 동작 순서를 정확하게 숙지, 이해..
URL클래스 1. URL 클래스는 URL을 추상화 하여 만든 클래스입니다. 2. URL 클래스는 final 클래스로 되어 있기 때문에 상속하여 사용할 수 없습니다. 3. 모든 생성자는 MalformedURLException 예외를 발생하기 때문에 반드시 예외처리를 해야 합니다. URL클래스의 주요생성자 URL클래스의 주요 메서드 URLConnection 클래스 URLConnection 클래스는 원격 자원에 접근하는 데 필요한 정보를 가지고 있습니다. 필요한 정보란 원격 서버의 헤더 정보, 해당 자원의 길이와 타입 정보, 언어 등을 얻어 올 수 있습니다. URL 클래스는 원격 서버 자원의 결과만을 가져 오지만, URLConnection 클래스는 원격 서 버 자원의 결과와 원격 서버의 헤더 정보를 가져 올 ..
InterAddress 클래스란? InetAddress 클래스는 IP 주소를 표현한 클래스입니다. 자바에서는 모든 IP 주소를 InetAddress 클래스를 사용합니다. InetAddress 클래스의 생성자 InetAddress 클래스의 생성자는 하나만 존재하지만, 특이하게 기본 생성자의 접근 제한자 default이기 때문에 new 연산자 객체를 생성할 수 없습니다. 따라서 InetAddress 클래스는 객체를 생성해 줄 수 있는 5개의 static 메서드를 제공하고 있습니다. InetAddress 객체를 생성하는 메서드 InterAddress 주요 메서드 InetAddress 클래스는 IP 주소를 객체화 했기 때문에 다양한 메서드를 제공하지 않습니다. 다만 호스트 이름과 호스트에 대응하는 IP 주소를 ..
네트워크란? 1. 네트워크란 다른 장치로 데이터를 이동시킬 수 있는 컴퓨터들과 주변 장치들의 집합입니다. 2. 네트워크의 연결된 모든 장치들을 노드라고 합니다. 3. 다른 노드에게 하나 이상의 서비스를 해주는 노드를 호스트라 부릅니다. 4. 하나의 컴퓨터에서 다른 컴퓨터로 데이터를 이동시킬 때 복잡한 계층을 통해 전송되는데, 이런 복잡한 레이어의 대표적인 모델이 OSI 계층 모델입니다. 5. OSI 계층 모델은 모두 7계층으로 이루어져 있습니다. 6. 데이터 통신을 이해하는데 OSI 계층 모델은 상당한 역할을 하지만, 인터넷 기반의 표준 모델로 사용하는 TCP/IP 계층 모델을 주로 사용하고 있습니다. 7. 자바에서 이야기하는 네트워크 프로그래밍은 TCP/IP모델을 사용하고 있습니다. IP주소 1. 모든..
if문을 사용하여 코딩을 할 경우 코드 라인이 의미 없이 길어지는 경우들이 종종 생깁니다. if(){ }else if(){ } 이렇게만 해도 벌써 5라인이죠. 하지만 단순한 if문일 경우 라인수를 획기적으로 줄여주는 방식이 있습니다. 바로 삼항 연산자라는 것인데요. 이번 포스팅에서는 삼항 연산자의 사용법에 대해 알아보도록 하겠습니다. 삼항 연산자의 예를 가볍게 들어보겠습니다. 위와 같은 경우 괄호 안의 조건문이 참일 경우 int a에 50이 담기게 되고 거짓일 경우에는 40이 담기게 되는 코드입니다. 삼항 연산자는 (조건문) : ? 참 : 거짓이라는 문법을 가지게 됩니다. //if else int a; if(5 사용법 & 예제
람다식이란? 람다식이란 "식별자없이 실행가능한 함수" 함수인데 함수를 따로 만들지 않고 코드한줄에 함수를 써서 그것을 호출하는 방식이라고 생각하시면 되겠습니다. 함수적 프로그래밍을 위해 자바 8부터 람다식(Lambda Expressions)을 지원하면서 기존의 코드 패턴이 많이 달라졌습니다. 자바스크립트에서 주로 봤었던 문법들을 이제 자바에서도 종종 보이곤 해요. 람다가 처음에는 생소하게 느껴질 수 있지만 문법이 간결한만큼 익숙해지면 가독성 면에서 장점이 큰 듯 합니다. (고급 프로그래머들중에서는 람다를 최대한 쓰지말라고 하는 사람도 있습니다.) 람다식 사용법 (매개변수, ...) -> { 실행문 ... } (매개변수, ...)는 오른쪽 중괄호 { } 블록을 실행하기 위해 필요한 값을 제공하는 역할을 합..
자바를 배울 초창기때 만들었던 미니언 성적관리프로그램입니다. 소스를 정리하다가 발견했네요.... 안에 소스를 보니 가관이군요... 이런식으로 코딩을 했었다니. 원래라면 고치고 인터넷상에 올려야하지만 엄두가 나지않아 그냥 올립니다. 그냥 Swing을 어떤식으로 사용했는지 참고용으로만 사용해주시면 감사하겠습니다. 프로그램 실행화면은 아래와 같습니다. 실행방법1. 위의 압축파일을 다운받아서 압축을 풀어줍니다. 2. 소스를 보시다보면 위와같이 그림파일 경로를 지정해놓은 소스가 여럿 보이실겁니다. 이 경로를 1번에서 다운받았던 경로로 교체해주시고 실행시키시면 됩니다. [Java] 그래픽 GUI AWT 사용법[Java] GUI 이벤트란 무엇인가?[Java] Swing 특징 및 구조 & 사용법 총정리
Swing이란? 자바의 JFC(Java Foundation Class)는 GUI 프로그래밍에 필요한 각종 킷을 모아놓은 것으로 현재는 GUI의 기능들을 구현할 수 있는 스윙, 2D, Drag&Drop 등을 지원합니다. 스윙을 사용하는 방법은 AWT와 거의 유사하나 AWT보다는 많은 컴포넌트 및 기능을 지원하고 있습니다. 스윙은 AWT와 달리 자바 프로그래밍으로 자체적인 제작된 컴포넌트이므로 플랫폼에 관계없이 모양이 동일하게 사용할 수 있습니다. Swing의 특징 1. 룩앤필(Look & Feel) 스윙에서 가장 획기적으로 바뀐 것 중에 하나가 컴포넌트의 화려함입니다. 이러한 외관(Look & Feel)을 프로그램을 실행하는 도중에 여러가지 형태로 바꾸어 사용 할 수 있는 기능을 제공합니다. 스윙은 순수한..
이벤트란? 이벤트(Event)라는 것은 윈도우 프로그래밍에서 어떤 특정한 행동이 발생한 그 자체를 의미합니다. 예를 들어 메뉴를 선택했다는가, 아니면 마우스를 클릭하거나, 윈도우의 크기를 조절하거나 등의 행위를 뜻하는 것입니다. 이런한 방식의 프로그래밍을 이벤트 중심의 프로그래밍이라고 하는데 윈도우 프로그래밍에서 중요한 개념 중에 하나입니다. 이벤트 소스(Event Source)는 이벤트가 발생할 수 있는 대상을 의미하고 그 대상으로부터 이벤트가 발생하면 발생된 이벤트를 처리해서 결과를 낼 수 있도록 해주는 것을 이벤트 핸들러(Event Handler)라고 합니다. 자바에서의 이벤트 처리 1. 프로그램이 실행중에 운영체제(OS)가 해당 프로그램에서 이벤트가 발생이 되는지를 검사한다. 2. 이때 이벤트가 ..
AWT란? 자바 언어가 탄생한 1995년에는 인터넷이 활성화되지 않았기 때문에 대부분의클라이언트 애플리케이션은 운영체제가 제공하는 네이티브 UI 컴포넌트를 이용하여 개발되었습니다. 그래서 Java1.0에 포함된 AWT는 운영체제가 제공하는 네이티브 UI컴포넌트를 이용하는 자바 라이브러리였죠. 그렇다보니 자바 애플리케이션이 실행되는 운영체제에 따라 UI의 모양이 서로다르고 종류도 제한적입니다. 하지만 비교적 쉽게 접할 수 있기에 콘솔에서 벗어나 Winodws개발을 하고싶은 자바개발자에게 입문코스?로 한번쯤은 해보고 넘어가는듯 합니다. AWT 구현순서 Container : 프로그램의 창의 역할을 합니다. 한개 이상의 컨테이너위에 컴포넌트들이 올려질영역입니다. (ex Frame, Panel, Dialog 등등..
자바에서 현재 날짜와 시간을 출력해주는 방법은 아주 다양합니다. 그 다양한 방법중에서 대표적으로 3가지가 주로 사용되고 있죠. Date객체를 사용하는 방법, Calendar클래스의 getInstance() 메서드를 활용하는 방법, System클래스의 currentTimeMillis() 메스드를 활용하는 방법이 바로 그것입니다. 이번 포스팅에서는 현재날짜, 현재시간을 원하는 형태로 포맷팅하여 출력하는 방법에 대해 알아보도록 하겠습니다. 1. Date객체를 활용하는 방법 SimpleDateFormat format1 = new SimpleDateFormat ( "yyyy-MM-dd HH:mm:ss"); SimpleDateFormat format2 = new SimpleDateFormat ( "yyyy년 MM월..