본문 바로가기
728x90

👨‍🏫Study/JAVA59

[JAVA] 18 - 4. UDP 네트워킹 UDP(User Datagram Protocol)란? 비연결 지향적 프로토콜이다. 비연결 지향적이란 데이터를 주고받을 때 연결 절차를 거치지 않고, 발신자가 일방적으로 데이터를 발신하는 방식이다. 연결 과정이 없기 때문에 TCP보다는 빠른 전송을 할 수 있지만 데이터 전달의 신뢰성은 떨어진다. *UDP는 발신자가 데이터 패킷을 순차적으로 보내더라도 이 패킷들은 서로 다른 통신 선로를 통해 전달될 수 있다. 먼저 보낸 패킷이 느린 선로를 통해 전송될 경우 나중에 보낸 패킷보다 늦게 도착할 수 있다. 또한 일부 패킷은 잘못된 선로로 전송되어 잃어버릴 수도 있다. 자바에서는 UDP 프로그래밍을 위해 java.net.DatagramSocket(발신점과 수신점에 해당하는 클래스)과 java.net.Datagram.. 2022. 3. 31.
[JAVA] 예외(EXCEPTION) 처리 1. 예외(Exception) 프로그램을 실행하다가 보면 어떤 원인때문에 비정상적인 동작을 일으키며 프로그램이 종료될 때 프로그램이 오류가 발생했다고 한다. 에러의 종류는 우리가 컴파일할때 발생할 수 있는 컴파일 오류와 실행 중 발생되는 런타임 오류 두 종류가 있다. 컴파일 오류는 우리가 잡기가 쉽지만, 런타임 오류는 잡기가 까다롭다. 자바에서는 런타임 오류를 두 종류로 보고 있다. 바로 에러(Error)와 예외(Exception)이다. 에러는 프로그램이 코드로 복구될 수 없는 오류를 의미하고 예외는 프로그래머가 직접 예측하여 막을 수 있는 처리가능한 오류라고 보시면 된다. 예를 들어 메모리가 부족한 경우 프로그래머가 직접 제어할 수 없으므로 이런 경우는 메모리 부족(OutOfMemoryError) 에러.. 2022. 3. 31.
[JAVA] 18 - 3. 채팅 서버, 클라이언트 구현 채팅 서버 구현 목표 : 채팅 서버 구현 코드를 보면서 스레드풀(ExecutorService), ServerSocket, Socket들이 어떻게 사용되는지 이해한다. 서버 클래스 구조(ServerExample.java) public class ServerExample extends Application {//javaFX 메인 클래스로 만들기 위해 APPlication 상속 ExecutorService executorService;//스레드풀인 ExecutorService 필드가 선언 ServerSocket serverSocket;//클라이언트의 연결을 수락하는 ServerSocket 필드가 선언 List connections = new Vector();//연결된 클라이언트를 저장하는 List 타입의 co.. 2022. 3. 30.
[JAVA] NullPointerException 처리방법 1. NullPointerException NullPointerException은 실제 값이 아닌 null을 가지고 있는 객체/변수를 호출할 때 발생하는 예외이다. String str = null; System.out.println(str.toString()); *이럴 때 예외가 발생하는게 null에는 toString이 없기 때문이다. 문제는 프로그래밍을 하다보면 해당 변수에 null이 들어있는지, 아닌지를 구분하기가 어렵다는 점이다. 그래서 NullPointerException 처리 방법으로 크게 세 가지가 있다. *일반적으로 NPE(NullPointerException)로 표시한다. 2. 처리방법 2.1. Try-Catch String s = null; try { s = s.toUpperCase();.. 2022. 3. 30.
[JAVA] 18 - 2. 네트워킹 18.6. 네트워크 기초 네트워크(network) 는 여러 대의 컴퓨터를 통신 회선으로 연결한 것을 말한다. 18.6.1. 서버와 클라이언트 컴퓨터가 인터넷에 연결되어 있다면 실제로 데이터를 주고받는 행위는 프로그램들이 한다. 서비스를 제공하는 프로그램을 일반적으로 서버(server)라고 부르고, 서비스를 받는 프로그램을 클라이언트(client)라고 부른다. 인터넷에서 두 프로그램이 통신하기 위해서는 연결을 요청하는 역할과 연결을 수락하는 역할이 필요하다. 클라이언트는 서비스를 받기 위해 연결을 요청하고, 서버는 연결을 수락하여 서버스를 제공해준다. 서버는 클라이언트가 요청(request) 하는 내용을 처리해주고, 응답(response) 을 클라이언트로 보낸다. 18.6.2. IP 주소와 포트(Port).. 2022. 3. 29.
[JAVA] 18 - 1. IO 기반 입출력 및 네트워킹 18.1. IO 패키지 소개 자바에서 데이터는 스트림(Stream)을 통해 입출력되므로 스트림의 특징을 잘 이해해야 한다. 스트림은 단일 방향으로 연속적으로 흘러가는 것을 말하는데, 데이터는 역시 출발지에서 나와 도착지로 들어간다. 18.2. 입력 스트림과 출력 스트림 프로그램이 데이터를 입력받을 때에는 입력 스트림(InputStream)이라고 부르고, 프로그램이 데이터를 보낼 때에는 출력 스트림(OutputStream)이라고 부른다. 입력 스트림의 출발지는 키보드, 파일, 네트워크상의 프로그램이 될 수 있고, 출력 스트림의 도착지는 모니터, 파일, 네트워크상의 프로그램이 될 수 있다. *해당 스트림은 프로그램을 기준으로 나타난다는 것을 알아두자. 자바의 기본적인 데이터 입출력(IO : Input/Out.. 2022. 3. 25.
[JAVA] JavaFX JavaFX란? 크로스 플랫폼에서 실행하는 리치 클라이언트 애플리케이션(Rich Client Application)을 개발하기 위한 그래픽과 미디어 패키지를 말한다. 데스크톱뿐만 아니라 임베디드 장비에서 실행하는 UI 애플리케이션을 개발할 수 있도록 가볍고 풍부한 UI를 제공하는 것을 목표로 한다. (Swing보다 가볍고 강력해짐) 변화 AWT > Swing > JavaFX *멀티 스레딩과 서버와의 통신 기능은 자바 표준 API를 사용하면서 JavaFX에서 재공하는 풍부한 UI 기능을 활용할 수 있다는 점이 가장 큰 장점이다. 2022. 3. 25.
[JAVA] 11 - 3 기본 API 클래스(Pattern, Arrays, Wrapper, Math, Date, Calendar, Format , LocalDate, Instant, DateTimeFormatter) Pattern 클래스와 정규표현식 이메일, 전화번호, 주민번호 등이 양식에 맞게 입력되었는지 확인할 때 용이하다. 정규표현식 기본 룰 [...]: ... 중 들어간 하나의 문자를 일치시킨다. [abc]: a, b, c 중 하나의 문자를 일치시킨다. [^abc]: a, b, c를 제외한 하나의 문자를 일치시킨다. [a-zA-Z]: a~z, A-Z 중 하나의 문자를 일치시킨다. \d: 한 개의 숫자, [0-9]와 동일하다. \s: 공백 \w: 한개의 알파벳 또는 한 개의 숫자, [a-zA-Z_0-9]와 동일하다. ?: 없거나 또는 한 개 *: 없거나 또는 한 개 이상 +: 한 개 이상 {n}: 정확히 n개 {n,}: 최소한 n개 {n, m}: n개부터 m개까지 (): 그룹핑 '하나의' 문자를 일치시킨다는 말.. 2022. 3. 23.
[JAVA] 11 - 2 기본 API 클래스(Objects, System, Class, Reflection, String, Tokenizer, Builder) Objects 클래스 내장 메소드 equals()와 deepEquals() 공통점 a와 b가 모두 null일 때 true를 리턴한다. 차이점 배열을 비교할 때, .equals()를 쓰면 배열의 주소 값이 똑같다면 true를 리턴한다. 배열을 비교할 때, .deepEquals()를 쓰면 배열 내 항목 값이 모두 같다면 true를 리턴한다. @Test public void equalsAndDeepEquals() { Integer[] a = new Integer[]{1, 2}; Integer[] b = new Integer[]{1, 2}; boolean equals = Objects.equals(a, b); System.out.println("equals = " + equals); // false boolea.. 2022. 3. 23.
728x90