프로그래밍/자바
-
javamail ssl 오류 SSLHandshakeException프로그래밍/자바 2021. 11. 4. 16:56
자바 메일 발송시 다음과 같은 Exception이 발생하였다. javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate) JDK가 TLS 프로토콜이 비활성 되어있거나 TLS 버전이 상이하여 발생하는 것이다. 그래서 다음 명령어를 통해 어떤 버전이 지원 가능한지 서버에 요청해 보았다. $ openssl s_client -connect 서버주소:465 -tls1_2 TLS 1.2 와 1.3은 정상 접속이 되는데 1.1은 error:141E70BF:SSL routines 라는 오류가 발생하였다. 그래서 자바 메일에서 사용할 기본 TLS 버전을 1.2로 변경하..
-
HttpURLConnection을 이용한 Http 클라이언트프로그래밍/자바 2020. 2. 22. 14:29
사용자는 웹브라우저(익스플로러, 크롬, 사파리 등등)를 통해 웹서버에게 필요 URI를 요청하고 응답 값을 받는다. 웹브라우저는 그 응답 값(보통 HTML)을 해석하여 화면을 만들어준다. 이 처럼 웹서버에게 웹서비스를 제공받으려면 웹 클라이언트가 필요하다. 이 웹 클라이언트 부분을 자바에서 구현하려면 어떻게 해야 할까? 자바에서는 URLConnection이라는 추상화 클래스를 제공해준다. HttpURLConnection의 계층구조를 보면 아래와 같다. 이 중에서 HttpURLConnection을 이용하여 웹 클라이언트를 설명해보겠다. – 예제 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; im..
-
자바 네트워크 프로그램, 블록과 논블록프로그래밍/자바 2020. 2. 22. 00:22
멀티스레드 프로그래밍에서 메서드나 객체에 대해 동기화를 할 경우 다른 누군가 그 메서드를 참조하고 있다면 “해당 메서드는 블록 된다”, 라는 표현을 사용한다. ‘가로막다’의 의미로 사용되는 것인데, 동시성 제어(변수의 무결성, 기타 등등)를 위하여 필요한 것이다. 네트워크 프로그래밍으로 넘어와 이야기를 해 보겠다. 네트워크 프로그래밍에선 입출력 작업이 필요하다. 입출력 작업엔 블록 방식과 논블록 방식이 존재한다. IO와 NIO이다. 자바에서 사용하는 블록방식의 입력(INPUT) 부분은 다음과 같다. while( (read = is.read(packet)) != -1){ System.out.println("receive message, from server : " + new String(packet, 0,..
-
자바 네트워크 프로그래밍, 동기와 비동기프로그래밍/자바 2020. 2. 21. 22:01
이기종 시스템 간의 연동, 통신을 위해서는 네트워크 프로그래밍이 꼭 필요하다. 자바나 기타 언어로 네트워크 연동 프로그램을 만들고자 한다면 어떻게 접근해야 할까? 네트워크 프로그래밍에서 말하는 동기와 비동기에 대해 이야기해 보고자 한다. 먼저 생각해 볼 문제는 시스템(or 노드)간 통신을 할 때 동기방식으로 할 것인가? 비동기 방식으로 할 것인가? 정하는 문제다. 쉬운 이해를 위해 동기 방식과 비동기 방식의 예를 들어보겠다. 동기방식은 A노드와 B노드 사이의 작업 처리 단위(transaction)를 동시에 맞추겠다는 뜻이다. ‘얄순이에게 예를 보자. 1) 말 춘계좌는 오천원을 뺄 생각을 하고 있다. 2) 말춘계좌는 얄 순계좌에게 오천 원을 전송한다. 3) 얄 순계좌는 오천 원이 수신되었단 걸 인지하고 말..