본문 바로가기

Java42

[JAVA] Swing 라이브러리를 사용하여 디지털 시계를 만들기 안녕하세요. 이번 게시글은 Java에서 다중 Thread와 Swing을 이용해 현재 날짜, 요일, 시간을 띄우는 예제입니다. 아래는 시연영상입니다. 다음은 코드 설명입니다. ClockFrame: 이 클래스는 프로그램의 메인 GUI를 표시하는 창입니다. 여기서 우리는 현재의 시간과 날짜를 가져와서 그것을 기반으로 레이블을 설정합니다. 이렇게하면 프로그램이 시작될 때 현재 시간부터 시계가 시작됩니다. 각 시, 분, 초는 자신의 스레드에서 동작하여 정해진 간격마다 해당 값을 업데이트합니다. TimeRunnable: 이 클래스는 각 시, 분, 초를 업데이트하는 작업을 수행합니다. 스레드가 시작되면 run 메소드가 호출되며, 이 메소드는 무한히 실행되면서 정해진 간격마다 시간 값을 업데이트합니다. 주어진 time.. 2023. 11. 14.
[JAVA] HTTP로 이미지 업로드 및 다운로드 하기 오늘은 HTTP로 이미지 업로드 및 다운로드 하기를 진행해보겠습니다. import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.nio.file.Path; import java.nio.file.Paths; public class SimpleHttpClient { // 클라이언트에서 이미지를 업로드하기 위한 경로 // Mac OS 기준입니다. 자신의 OS에 맞게 절대 경로를 수정해주세요. static String clientUploadServerPath = "/Users/컴퓨터이름/Downloads/client-upload-s.. 2023. 11. 13.
[JAVA] HTTP서버에 GET, POST 요청하기 저번 게시글 (https://stickode.tistory.com/957 ) 에 이어서 오늘은 클라이언트를 만들고, GET과 POST를 진행해보겠습니다. // HTTP 서버 구현 클래스 public class SimpleHttpServer { // 로거 인스턴스 생성 private static final Logger logger = Logger.getLogger(SimpleHttpServer.class.getName()); // 메인 실행 메서드 public static void main(String[] args) throws Exception { // 포트 8000에서 동작하는 HTTP 서버 인스턴스 생성 HttpServer server = HttpServer.create(new InetSocketAd.. 2023. 11. 4.
[JAVA] 간단한 HTTP서버 만들기 오늘은 간단한 HTTP서버 만들기를 해보겠습니다. 아래 코드를 실행한 후, 브라우저에서 아래 두 링크를 입력해봅니다. 글의 맨 아래 첨부한 이미지가 출력되면 정상적으로 서버가 운영되고 있는 것입니다. 자바는 17버전을 사용했습니다. http://localhost:8000/ http://localhost:8000/test // HTTP 서버 구현 클래스 public class SimpleHttpServer { // 메인 실행 메서드 public static void main(String[] args) throws Exception { // 포트 8000에서 동작하는 HTTP 서버 인스턴스 생성 HttpServer server = HttpServer.create(new InetSocketAddress(800.. 2023. 10. 25.
[Java] 데이터를 Thread에서 공통으로 사용하는 방법 예제 안녕하세요 이번 포스팅에서는 오늘은 자바를 사용하여 두 개의 쓰레드가 공통 데이터를 어떻게 공유하는지 보여주는 예제를 함께 살펴보려고 합니다. 이 예제의 목표는 1부터 1,500,000,000까지의 합계를 계산하는 쓰레드와, 그 결과를 출력하는 쓰레드가 어떻게 동작하고 상호 작용하는지 이해하는 것입니다. 먼저, 쓰레드는 독립적인 실행 흐름을 가진 프로그램의 한 부분입니다. 여러 쓰레드가 동시에 동작하면서 효율적으로 자원을 사용할 수 있습니다. 하지만, 이렇게 병렬 처리를 할 때 여러 쓰레드가 동일한 메모리나 데이터를 동시에 접근하면 문제가 발생할 수 있습니다. 이 문제를 해결하기 위한 방법 중 하나로 데이터를 안전하게 공유하는 방식을 사용할 것입니다. 이 예제에는 크게 세 개의 클래스가 있습니다. 이 클.. 2023. 10. 17.
[JAVA] 소켓을 활용한 간단한 에코 서버와 클라이언트 EchoClient.java, EchoServer.java를 실행하면 클라이언트와 서버가 메시지를 주고 받는 간단한 프로그램을 작성할 수 있습니다. EchoClient.java import java.io.*; import java.net.*; public class EchoClient { // 서버 주소와 포트 번호를 상수로 설정 private static final String SERVER_ADDRESS = "localhost"; private static final int SERVER_PORT = 4444; public static void main(String[] args) { // try-with-resources를 사용하여 자원을 자동으로 닫게 설정 // 소켓, 출력 스트림, 입력 스트림을 초기.. 2023. 10. 14.
[JAVA] Netty에 SSL 적용하기 안녕하세요 이번 시간에는 Netty WebSocket 서버에 SSL 을 적용해보겠습니다. Netty로 WebSocket 서버를 만드는 방법은 다음 글을 참고해주세요. 1. SSL 인증서 가져오기 2. /etc/ssl 디렉토리에 넣기 예제에서는 다음과 같이 넣었습니다. /etc/ssl/ca_bundle.crt /etc/ssl/certificate.crt /etc/ssl/private/private.key 3. 다음 명령어로 private.key 의 PKCS8 형식 파일을 만들어줍니다. 예제에서는 private_netty.key 파일을 따로 만들었습니다. openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in private.key -out private_ne.. 2023. 10. 13.
[Java] Netty로 WebSocket 통신하기 안녕하세요 이번 시간에는 네트워크 애플리케이션 프레임워크인 Netty로 간단한 WebSocket 에코 서버를 만들어보겠습니다. 1. Netty 환경 세팅 Ubuntu 20.04.6 LTS에서 실행했습니다. Netty 프로젝트를 빌드하기 위해 Maven을 설치해보겠습니다. Maven 란 자바 프로젝트 빌드 자동화 도구이고 Apache 소프트웨어 재단에서 관리하고 있습니다. 다음 명령어를 실행하여 maven을 설치합니다. sudo apt update sudo apt install maven 다음 명령어를 실행해서 잘 설치 됐는지 확인할 수 있습니다. mvn -version # 잘 설치됐으면 아래와 같이 출력됩니다. # Apache Maven 3.6.3 # Maven home: /usr/share/maven .. 2023. 10. 2.
[JAVA] Swing을 이용한 스케치 기능 구현 안녕하세요 이번 게시글에서는 JAVA에서 Swing을 이용해 스케치 기능을 구현해보겠습니다. 우선 Java Swing이란 Java에서 제공하는 그래픽 사용자 인터페이스(GUI) 툴킷 중 하나입니다. 윈도우, 버튼, 체크박스, 텍스트 필드와 같은 기본적인 유저 인터페이스 요소를 만드는데 사용됩니다. 결론적으로 해당 기능 시연영상부터 보여드리겠습니다. 다음은 전체적인 코드입니다. 주석으로 코드별 설정을 달아놓았으니 참고하시길 바랍니다. import javax.swing.*; import java.awt.*; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionAdapter; // 해당 클래스는 JFrame 상속받고 있음. // JFrame .. 2023. 9. 12.