본문 바로가기
반응형

분류 전체보기155

Socket과 Thread의 통신 프로그램 만들기 이번 포스팅에서는 Socket과 Thread를 활용한 통신 프로그램을 다뤄볼 것이다. 이전의 RMI 통신 프로그램과는 다른 방식이다. 만든 버전별로 통신 프로그램을 분석해볼 것인데, 그전에 앞서 다른 예제를 통해 대략적인 Thread 형식과 Socket 프로그램의 형식을 살펴보겠다. 우선, Core Java의 예제와 내용을 참조하여 Thread간 통신을 위한 파이프 사용을 살펴보겠다. Thread 간의 통신패턴은 아주 단순할때가 많다. Producer(생산자)라 불리는 하나의 Thread는 byte의 스트림을 만들어낸다. Consumer(소비자)라 불리는 다른 Thread는 해당 byte 스트림을 읽고 처리한다. 만약 읽기 위한 byte 스트림이 없을때는 Consumer Thread는 block된다. 만.. 2024. 1. 6.
RMI 통신 프로그램 만들기 Java RMI (Remote Method Invocation)와 그를 활용한 통신 프로그램을 만들어 보겠다. 먼저, Head First Design Patterns를 참고해 원격 메서드에 대해서 기본적인 것을 알아보겠다. Local 객체에 대해서 메서드를 호출할 때, 그 요청을 원격 객체에 전달할 수 있게 해주는 시스템을 만들것이다. 통신을 처리해주는 보조 객체가 필요할 것이고, 그 보조 객체를 이용하면 Client 입장에서는 Local 객체에 대해서만 메서드를 호출하면 된다. 그러면 Client 보조 객체가 그 요청을 원격 객체한테 전달한다. 즉, Client 객체는 원격 서비스에 있는 메서드를 호출한다고 생각하고 작업을 처리한다 (Client 보조 객체가 Service 객체인것처럼 행세함). 하지만.. 2024. 1. 6.
TableModel 만들기 Table을 MVC 패러다임으로 짠 것을 허접한 버전에서부터 발전시키는 과정까지 만들어 보겠다. import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.*; import javax.swing.*; import javax.swing.filechooser.*; import javax.swing.table.*; class StudentModel extends AbstractTableModel { static class Student implements Serializable { String name; int kor; int eng; int math; int sum; boolean scholarship; Student (Str.. 2024. 1. 6.
Java Reflection Java의 Reflection은 로딩이 완료된 클래스에서 또 다른 클래스를 동적으로 로딩(Dynamic Loading)하여 constructor, member field, member method 등을 사용할 수 있게 해준다. RTTI 같은 기법도 Reflection의 기능이다. Reflection은 C나 C++ 등의 언어에는 없다. import java.util.*; class DynamicLoading { public static void main(String[] args) { String name = "java.util.Stack"; try { Class what = Class.forName(name); Stack s = (Stack)what.newInstance(); s.push(10); s.pu.. 2024. 1. 6.
TreeModel 만들기 GUI 작업에서 중요한 파트인 Tree. 직접 만들어 보았다. 작업 과정을 소개해 보겠다. TreeFrame이라는 View와 TreeModel의 Model 그리고 View에 포함된 Controller로 MVC 패러다임을 따랐다. import java.util.*; import javax.swing.event.*; import javax.swing.tree.*; public class MyTreeModel implements TreeModel { private TreeNode root; MyTreeModel() { root = null; } void setRoot(String s) { root = new TreeNode(s); } boolean addNewChild(String parent, String .. 2024. 1. 6.
심심해서 만들어보는 앱 "SuldenLion's Versatile App" 개발로그_1 보호되어 있는 글 입니다. 2023. 12. 31.
반응형