본문 바로가기

Java

[Java 소켓 프로그래밍 기초/실습] 간단한 채팅 프로그램 구현해보기 이 포스팅은 개인적인 socket programming 공부를 위해 여러 글들과 코드들을 참조하였습니다. 포스트 맨 아래, 그리고 코드 윗부분에 주석으로 참조를 첨부하였으니 확인 부탁드립니다. 이번에는 Java Socket Programming을 이용하여 간단한 채팅 프로그램을 구현해보고자 합니다. 들어가기에 앞서서... 항상 상속에 대하여 헷갈리는 부분이 있었기에 정리하고 가겠습니다. Java에서 상속(Inheritance)은 extends와 implements 두 가지가 존재합니다. 1) extends - 부모 메소드를 그대로 사용할 수 있으며 오버라이딩(메소드 재정의)을 할 필요가 없습니다. - class가 class를 상속할 때, interface가 interface를 상속할 때 extends를 .. 더보기
[Java 소켓 프로그래밍 기초/실습] Server-Client 통신해보기 최근 Java Socket Programming을 이용하여 해야 하는 프로젝트에 참여하게 되어 기초부터 공부하기 위해 작성한 글입니다. 다른 블로거 분들의 코드와 글을 참고하였으니 포스트 제일 하단 부분의 참조(reference) 확인 부탁드립니다. Java Socket Programming을 시작하게 되면 제일 먼저 시작하는 것이 Server-Client 간의 통신 구축입니다. 이를 위해서는 Server와 Client, 2개의 Class를 만들어야 합니다. 기존에 좋은 코드가 있어서 참고를 하고 제가 이해 안가거나 모르는 부분은 주석으로 상세히 설명해놓았습니다. Java 소켓 프로그래밍을 공부하시는 분들께 도움이 되었으면 합니다. 실습에 앞서서... Java라는 언어에 대한 깨알 설명 몇가지를 첨부하였.. 더보기
[Socket/SDN 기초] Socket Programming과 Software Defined Network(SDN)에 대한 사전 지식 Openflow를 이용한 SDN(Software Defined Network) Controller를 GUI와 함께 구현하는 과제를 받았습니다. 이를 위하여 Java Socket Programming을 이용하려고 합니다. GUI(Graphic User Interface)와 더불어 Agent를 SDN Controller에서 Openflow를 이용해 조작하기 위해서는 Fox라는 단순화(Simplified)된 SDN Controller를 이용하여 구현합니다. FOX는 C언어 기반으로 구현되어 있기 때문에 GUI가 좋지 않습니다. C에서 그럴싸하게 GUI 구현하는 것은 매우 어렵다고 합니다. 하지만 Java에서는 AWT나 Swing이라는 GUI를 제공하기 때문에 편하게 구현이 가능합니다. SDN 컨트롤러 구현에 .. 더보기
[대학원 과제] Extended Euclidean Algorithm(확장 유클리드 호제법)을 이용한 모듈러 역원 구하기 with Java 앞의 포스팅에 앞서서 확장 유클리드 호제법을 이용한 모듈러 역원 구하는 방법을 코드화하였습니다. 해당 방법을 코드화 하여 구현하였으며 과제로 나온 문제 예시는 다음과 같습니다. 이를 Java로 코드화하였을 때, 결과가 올바르게 나온 것을 확인할 수 있습니다. 코드는 아래 Repository에 담아 두었습니다. https://github.com/ahrizwell/myRepository/blob/java/extendedEuclideanInverse.java ahrizwell/myRepository Everything I did. Contribute to ahrizwell/myRepository development by creating an account on GitHub. github.com 물론 연산속도.. 더보기
[대학원 과제] 모듈러(Modulo, %)의 역원 구하는 프로그램 with Java 이번에는 모듈러의 역원을 구하는 문제가 과제로 나왔습니다. 원래 모듈로의 역원을 구하기 위해서는 1) 유클리드 호제법, 그리고 이를 확장한 2) Extended 유클리드 호제법, 그 후 3) Multiplicative Inverse 를 배우고 구하는 방식을 권고(?)하고 있습니다. 하지만 생각해보니 단순히 모듈러의 역원을 구하는 것이라면, 위 방식을 응용한 방법을 사용하는 것이 좋다고 생각하여 알고리즘들을 찾아보았습니다. 원래 네트워크 암호학 배울 때 다 그렇지만 시험기간이 다가올수록 꼼수(?)를 사용하여 한방에 구할 수 있는 공식 혹은 알고리즘을 만들어 시험장에 가는게 정석(?)이기 때문이죠. 참고로, 구하는 속도 측면에서는 확장된 유클리드 호제법을 이용한 Multiplicative Inverse를 이.. 더보기
[대학원과제]Finite Field Program with Java Finite Field에서 p(x)(Primitive Polynomial)의 계수와 차수가 주어지면 Finite Field의 원소를 벡터의 형태로 출력하는 프로그램입니다. 간단하게 예를 들자면 p(x) = x^3 + x + 1이 주어지면 차수는 3이 되고 계수는 1 0 1 1이 입력됩니다. 그렇게 되면 결과 값으로, 0 = 000 / 1 = 100 / a = 010 / a^2 = 001 / a^3 = 110 / a^4 = 011 / a^5 = 111 / a^6 = 101 이 출력되게 됩니다. 즉, 사용자가 3과 1 0 1 1 을 입력하면 해당 Finite Field의 원소를 벡터의 형태로 출력하게 되어있습니다. 더불어 2번문제 Multiplicative Representation과 3번문제 Additiv.. 더보기
[Java] Java 코딩 실행환경 구축하기(Eclipse 설치법) Java는 안드로이드 어플리케이션이나 웹 구축 시 많이 사용하는 객체 지향 언어입니다. 최근 많은 기업에서 Java를 사용하여 개발한다고 합니다. 이는 Java를 사용하는 빈도가 예전에 비하여 많이 늘었다는 이야기로써 제일 많이 사용하는 언어가 Java라는 의미는 아닙니다. Eclipse는 C언어 공부할 때 Visual Studio와 비슷한 프로그램이라 보시면 됩니다. 물론 메모장에 코딩하고 cmd 상에서 java를 실행할 수도 있지만 초심자가 사용하기엔 난해한 방법이며, 무엇보다 코드 정렬과 디버깅이 굉장히 어렵습니다. 포스팅을 하기 위해서 새로운 컴퓨터에 Eclipse를 다운로드 받아봤는데 예전보다 많이 간단해졌습니다. 예전에는 JVM, JDK를 따로 Oracle가서 다운받아야 했는데 지금은 그냥 E.. 더보기