|
글. ???
제 1 장 서론
Java 언어는 썬 마이크로시스템즈에서 1991년부터 추진된 그린 프로젝트의 일환으로 개발되었다. Java는 1990년 James Gosling에 의해 처음 연구가 시작되어, World Wide Web이 개발되기 시작하였던 1991년 선 마이크로 시스템에서 개발을 시작하였다.
개발자인 James Gosling은 그 당시 단순하고 버그가 없는 가전 전자 제품을 만드는 것을 목적으로 일에 착수하였는데, 이를 위해 플랫폼에 독립적인 코드를 작성하여 모든 CPU에 맞도록 컴파일 되어야 하고, 서로 다른 장치를 연결하는 분산 네트웍에 적당한 언어를 개발해야 했다. 다시 말해서, Gosling은 특정한 컴퓨터 칩에 대해 컴파일해야 하는 C언어의 문제점, 또 가전 제품과 전기기기들을 통합하여 가정 환경에 새로운 인터페이스를 제공하는 새로운 프로그래밍 언어의 개발에 착수하였던 것이다. World Wide Web이 인터넷 서비스 부분에서 각광을 받기 시작하던 1993년 Gosling은 Java를 World Wide Web에 적용할 것을 결정하였다. 그는 PC, 맥, 유닉스와 같은 다양한 컴퓨터를 연결하고 있는 Web에는 플랫폼에 독립된 Java와 같은 언어가 이상적이라고 생각하였다. 그리하여 Java 언어를 이용하여 HotJava Web Browser을 개발하였다.
1995년 초에 HotJava와 Java, 그리고 Java의 문서와 소스 코드가 알파 버전으로 Web에 공개되었다. 초기의 Java는 SPARC 솔라리스 상에서 동작하도록 되었고, 곧이어 Windows NT, 그 해 여름엔 Windows95와 Linux에 이식되었다. 그 해 가을에 베타 1이 SUN사의 Web 사이트에 발표 되었고 Netscape 2.0에서 Java를 지원하기로 결정되었다. Java의 베타 1은 많은 업체들로 하여금 Java 기술을 라이센스하도록 하였고 대부분의 운영체제에서 Java의 이식이 시작되었다.
1995년 12
Sun사는 현재 자바 언어를 이용한 데이터베이스의 연동(JDBC), 자바 웹 서버, 자바 웹 서버에서 작동하는 서블릿(Servlet), 하드웨어의 포팅을 위한 임베디드 자바(Embeded JAVA), 퍼스널 자바(Personal JAVA), 자바 가상 공간(Java Virtual Space) 등 수많은 응용 자바 환경을 제공하고 있다.
Java란 인터넷과 맞물려 돌아가는 소프트웨어 설계에 적합한 프로그래밍 언어이다. 또한 소프트웨어 설계 업계에서 점점 유용성을 인정받고 있는 방법론인 객체지향 언어이기도 하다. 덧붙이자면, Java는 크로스 플랫폼 언어 즉, 마이크로소프트 윈도우 운영체제, 애플 매킨토시, 솔라리스를 포함한 유닉스의 여러 가지 버전 등에 관계없이 똑같이 실행되도록 설계된 언어이다. Java는 월드 와이드 웹에 실행될 수 있는 탁월함으로 잘 알려졌다. 넷스케이프 내비게이터나 마이크로소프트 인터넷 익스플로러 브라우저를 사용해서 웹 서버에서 Java 프로그램을 받아 웹 사용자의 시스템에서 실행하는 방식이다. 애플릿이라고 불리는 이들 프로그램은 이미지와 비슷한 형식으로 웹 페이지에 뜨지만 이미지와는 달리 애플릿은 사용자와 대화 할 수 있다. 다시 말해서 사용자의 입력을 받아 반응하고 계속 출력을 바꿔서 보여준다.애플릿은 Java 언어로 쓰여지고 프로그램으로 실행될 수 있는 형태로 컴파일되어 웹 서버에 탑재되며 웹에서 벌어지는 상호 대화형 효과를 만드는 데 쓰인다. Java가 가장 많이 활용되는 분야가 애플릿이기는 하지만, 이 언어가 사용될 수 있는 원래의 단 한가지 용도가 있다.
비주얼 C++, 비주얼 베이직, 델파이 등과 같이 Java는 상용 소프트웨어를 개발 할 수 있는 견고한 언어로서, 그래픽 사용자 인터페이스, 네트워킹, 데이터베이스 연결, 그리고 다른 섬세한 기능을 지원한다. 이런 프로그램은 웹 브라우저에서 실행되지 않으며 애플릿과 구별하기 위해 애플리케이션이라고 부른다.
본 논문에서는 Java를 이용한 Chatting 프로그램의 설계 및 구현과정에 대해서 설명한다. 서버프로그램은 포트를 지정해서 ServerSocket을 생성해 클라이언트 프로그램이 접속할 때가지 대기하고 이 상태에서 클라이언트 프로그램이 접속하면 Socket이 생성되어 데이터 송·수신 가능 상태가 되어 Chatting을 할
수 있도록 만들어졌다.
제 2 장 JAVA의 개요
2.1 Java 특성
2.1.1 간단하다. 객체 지향이다. 친숙하다.
Java의 주된 특징으로 기존 소프트웨어 개발자들이 큰 프로그래밍 교육 없이 프로그램을 할 수 있는 간단한 언어임을 들 수 있다. Java의 기본 개념을 쉽게 이해할 수 있어서 프로그래머들은 시작부터 효율적인 프로그래밍을 할 수 있다.
객체 기술은 Java를 통해 프로그래밍의 주류로 들어설 수 있게 되었다. 우연하게도 Java에서는 분산 환경, 클라이언트-서버 기반 시스템의 요구가 객체 기반 소프트웨어의 캡슐화된, 메시지 전달 패러다임과 함께 만나고 있다. 점점 더 복잡해지는 네트웍 기반 환경에서 프로그래밍 시스템은 반드시 객체 지향 개념을 채택해야 한다. Java는 간명하고 효율적인 객체 기반 개발 환경을 제공한다.
Java가 수많은 객체 지향 특징과 C++의 외양을 그대로 유지하였기 때문에 프로그래머들은 손쉽게 Java로 이전하여 빠르게 생산성을 갖출 수 있다.
2.1.2 신뢰성과 보안성이 있다.
Java는 높은 신뢰도를 가진 소프트웨어 제작에 맞게 설계되어 광범위한 컴파일 시 검사와 실행 시 검사를 제공한다. 또 언어의 여러 특성들이 프로그래머를 신뢰도 있는 프로그래밍 습관으로 이끈다.
포인터와 포인터 연산을 사용하지 않는 메모리 관리 모델은 C/C++ 프로그래밍의 에러들을 제거한다.
Java는 분산환경에서 작동하도록 설계되었다. 이것은 보안이 중요함을 뜻한다.
Java는 언어와 런타임 시스템 안에 보안 기능이 설계되어 있기 때문에 외부로부터 침해받지 않는 프로그램을 개발할 수 있게 해준다. Java 응용 프로그램은 네트웍 환경에서 바이러스를 만들거나 파일 시스템을 침해하려는 권한 없는 코드의 침해로부터 안전하다.
2.1.3 멀티 쓰레드 지원 및 동적성
Java는 멀티 쓰레드 언어이므로 원칙적으로 멀티 쓰레드를 지원하는 운영체제하에서만 그 기능을 다할 수 있다. 따라서 윈도우 3.1이나 솔라리스 1.x에서는 Java의 이식이 원칙적으로 불가능하다. 멀티쓰레드 기능은 하나의 프로그램내에서 여러 가지 작업을 동시에 수행할 수 있다. 쓰레드는 하나의 커다란 프로그램내에서 독립적으로 수행 가능한 작은 프로세스로 볼 수 있다.
Java는 런타임 시까지 링크 과정을 연기함으로써 응용들이 동적으로 패치될 수 있도록 한다.
2.1.4 기계 중립적이고 이식성이 높다
Web의 서버-클라이언트 환경에서 이기종 서버-클라이언트의 지원은 매우 중요한 문제다. 일반적으로 네트웍은 다양한 CPU와 OS를 가진 시스템들로 구성되어 있다. Java 응용 프로그램이 네트웍상의 어디에서든지 수행이 되기 위해서는 컴파일러가 기계 구조에 중립적인 오브젝트 파일 포맷을 생성해야 한다. 그러므로, 실행 파일이 기계 중립적인 이진 코드다. 이 클래스 파일을 기계 종속적인 Java 런타임이 인터프리트하여 실행시키게 된다.
유형 정의를 시스템에 무관하게 정의하고 있습니다. 네트웍을 통해 프로그램을 다운받아 하드웨어에 관계없이 사용하기 위해서는 근본적으로 아키텍처에 독립적이고 이식성을 보장하는 구조가 요구됩니다. Java는 이러한 문제를 해결하게 위해 하드웨어 아키텍쳐, 운영체제 인터페이스, 윈도우 시스템에 독립적인 바이트 코드를 사용한다.
Java 프로그램은 Windows95/NT, Solaris2.x, Mac OS7.5와 같은 Java가 지원되는 모든 플랫폼상에서 Java 컴파일러에 의해 바이트 코드 형태로 컴파일되고, 인터프리터가 동작하는 Java 가상 기계에 의해 어떤 기종의 시스템에서도 쉽게 해석된다.
2.2 Java의 종류
2.2.1 Java Application
일반적인 응용 프로그램으로 Browser 없이 독립적으로 실행될 수 있는 프로그램이다. Applet과 달리 하나의 main() 부분을 가지고 있다.
2.2.2 Java Applet
Java를 지원하는 Web Browser에 의해서만 실행된다. 즉, World Wide Web(WWW)에서 Browser를 통해 실행할 수 있는 프로그램이다. Applet은 HTML 문서 내에 포함되어 사용되는 Java 프로그램을 가리킨다.
2.2.3 HotJava
선 마이크로시스템즈에서 만든 최초의 Java Applet 지원 Browser다.
2.2.4 Java Script
Java 언어와는 별도로, 선 마이크로시스템과 Java Script License를 결합하여 이름을 Java Script 라고 하였다. 아래 표에서 자바와의 차이점을 비교하였다.
표2.1 Java Script와 Java의 비교
자바 스크립트 |
JAVA |
클라이언트의 웹 브라우저에서 인터프리트되서 실행된다. |
서버측에서 컴파일된 코드가 클라이언트의 웹 브라우저에 다운로드되서 실행된다. |
내장된 객체를 이용하고, 프로토타입 방법을 이용해서 상속을 지원한다. 객체의 메소드나 프라퍼티는 동적으로 추가될 수 있다. |
애플릿은 상속성을 갖는 객체 클래스로 구성된다. 클래스나 객체에 동적으로 메소드나 프라퍼티가 추가되지 않는다. |
코드가 HTML에 내장되어 있다. |
코드가 HTML과는 분리되어 있다. |
변수의 타입이 선언되지 않는다. |
변수의 타입은 반드시 선언되어야 한다. |
동적인 바인딩.객체의 레퍼런스는 실행시에 체크된다. |
정적인 바인딩.객체의 레퍼런스는 컴파일시에 존재해야 한다. |
클라이언트의 하드디스크에 자동적으로 쓰기를 할 수 없다. |
클라이언트의 하드디스크에 자동적으로 쓰기를 할 수 없다. |
2.3 Java의 활용분야
금융, 사무 자동화와 같은 실시간 환경, 웍플로우 기능이 요구되는 환경에서 Java의 위력은 유감없이 발휘된다. 온라인 은행 업무, 라이브 데이타 교환, 보안 무역(거래), 실시간 문서 관리, 사무 자동화 등에 적용될 수 있다. 최근에 인터넷과 데이타베이스, 사무용 기업환경이 결합한 인트라넷의 주요 기술로 Java를 빼 놓을 수 없는 것도 이 같은 Java의 특징을 반영하는 일례라고 할 수 있다.
Web 상에서 여러 사용자가 인터렉티브한 게임을 할 수 있다는 점이다. 다중 사용자 게임을 비롯해 컴퓨터 시뮬레이션에 이르기까지 그 활용 범위는 무궁무진하다.
애니메이션 기능은 기존 Web을 이용한 광고, 홈쇼핑 등에 적용되어 크게 각광받을 수 있는 적용 분야다. 인터렉티브 쇼핑, 라이브 경매, 상호 작용 3D, 오디오, 비디오 광고 등이 가능하다.
Java 환경은 MIS분야에 적용되어 군사 응용 프로그램, 네트웍 데이터베이스 액세스 프로그램에 활용될 수 있고. 이를 통해 원격 교육, 세미나, 실시간 공동 작업등이 가능하다.
제 3 장 JAVA 채팅 과정
3.1 시스템 환경 및 구성 요소
표3.1 시스템 환경
하 드 웨 어 |
소 프 트 웨 어 |
CPU : Pentium 333MHz 메모리 : 64MB HDD : 6.4GB |
O/S : Win98 프로그램 언어 : Java 웹 에디터 : Namo 3.0 웹 브라우저 : 인터넷 익스플로워 5.0 웹 서버 : 아파치 1.3 Java 툴킷 : Kawa 3.1 , JDK 1.2.1 |
표3.2 프로그램 구성요소.
구 성 요 소 |
역 할 |
서버 클래스 |
User에게 Graphic User Interface(GUI)를 제공한다. 소켓을 생성하여 클라이언트간의 통신을 제공한다. |
클라어언트 클래스 | |
쓰래드 클래스 |
Server측에서 Data Object를 받아서 ChatClient GUI에 메시지를 뿌려주는 일을 한다. |
3.2 채팅 과정
첫째. 사용자가 웹브라저에서 IP주소를 이용 웹서버에 접속한다.
둘째. "즐거운 채팅하기 버튼"을 눌러 IP주소, 대화명을 입력할 수 있는 GUI를 제공받는다
셋째. 연결 버튼을 눌러 대화창 GUI를 제공받는다.
넷째. 채팅을 한다.
3.2.1 웹서버 설정
웹브라우저에서 프로그램이 위치하고있는 웹서버에 접속하기 위해서 웹서버 프로그램을 설치해야하며, 웹서버 프로그램으로 아파치를 설치했다. 서버가 위치한 컴퓨터의 위치를 표시하기위해 아파치 프로그램의 Conf 디렉토리에 httpd.conf 파일이 있다. 여기서 ServerName에 서버컴퓨터의 IP address를 입력한다. main 프로그램을 가동시킬 디렉토리를 표시해주고 홈페이지의 첫장(Index.html)이 있는 곳을 표시한다.
3.2.2 "즐거운채팅하기" 버튼 만들기
자바프로그램이 홈페이안에 위치할려면 애플릿(Applet)을 상속받아야 한다.
public class ChatClientAPP extends java.applet.Applet 버튼을 생성하고 버튼이 클릭되어지면 IP주소와 대화명을 입력할 수 있는
ChatClient() 메소드를 호출할 수 프로그램 소스는 다음과 같다.
Button b;
AL al;
public void init(){
b=new Button("즐거운 채팅하기");
add(b);
al=new AL();
b.addActionListener(al);
}
class AL implements ActionListener{
public void actionPerformed(ActionEvent e){
if(e.getActionCommand()=="즐거운 채팅하기") {
new ChatClient();
}
}
}
홈페이지안에 "즐거운채팅하기" 버튼을 삽입하기 위해서는 홈페이지 HTML code안에 삽입할 프로그램을 지정해 주면 된다.
3.2.3 IP주소, 대화명 입력을 위한 폼 작성
첫째. TextField키워드를 이용하여 서버에 접속할 IP주소를 입력할수 있도록 한다.
둘째. TextField키워드를 이용하여 대화명(ID)을 입력할수 있도록 한다.
셋째. "연결"버튼을 누르면 대화창폼을 활성화시키고 서버와 통신이 가능한 상태가 되도록한다.
IP주소,대화명을 입력하고 "연결"버튼생성은 다음과 같이 작성할 수 있다.
public ChatClient() {
Panel p = new Panel();
p.setLayout(new GridLayout(2,2));
serverLabel = new Label("Server",Label.CENTER);
IDLabel = new Label(" I D ",Label.CENTER);
serverTextField = new TextField(0);
IDTextField = new TextField(0);
IDTextField.setBackground(Color.orange);
serverTextField.setBackground(Color.orange);
p.add(serverLabel);
p.add(serverTextField);
p.add(IDLabel);
p.add(IDTextField);
conn = new Button("연결");
conn.addActionListener( new ActionHandler());
add(p,"Center");
add(conn,"South");
p.setBackground(Color.orange);
setSize(300,100);
setBounds(200,200,300,100);
setVisible(true);
}
연결버튼이 클릭되어지면 소켓을 생성하여 클라이언트와 서버가 통신을할 수 있는 상태가 되고 대화창 폼을 생성할 수 있도록 작성했다.
socket = new Socket(serverName,port);
System.out.println(serverName + " 에 접속되었습니다.");
oos = new ObjectOutputStream( socket.getOutputStream() );
ois = new ObjectInputStream( socket.getInputStream() ); System.out.println("OutputStream을 열었습니다. ");
Data d = new Data(IDTextField.getText(),"님이 접속하였습니다.",Data.처음접속);
System.out.println("Stream 연결에 성공하였습니다.");
oos.writeObject(d) ;
System.out.println("InputStream을 열었습니다. ");
cct = new ChatClientThread(ois,this);
t = new Thread(cct);
t.start();
3.2.4 서버/클라이언트간의 통신과정
서버와 클라이언트간에 통신을 위해 소켓이 있어야 되며, 여기에는 서버 소켓과 클라이언트 소켓이 있다.
(1) 서버 소켓
통신을 하기 위해서는 먼저 서버에서 소켓을 준비해야 한다. Java에서는 그것을 위해 ServerSocket이라는 클래스가 제공된다. 다음과 같이 초기화를 하면 서버 소켓이 만들어진다.
ServerSocket 소켓변수이름=new SerSocket(포트번호): |
서버에는 반드시 두 개의 소켓이 필요하다. 하나는 서버용 소켓으로 이것으로는 통신을 할 수가 없고 단지 클라이언트의 연결을 기다린다. 따라서 클라이언트와 연결이 되면 실제로 통신을 하기 위해서는 소켓을 하나 더 만들어서 연결해 주어야 한다. 이 소켓은 서버소켓.accept()명령으로 만들어줄 수 있다.
Socket xxx= yyyy.accept(); |
(2) 클라이언트 소켓
Socket 객체의 생성은 내포적으로 클라이언트와 서버 사이의 접속을 설치한다. 그 접속을 설치하는 것에 대한 세부 사항을 명확하게 드러내는 메서드나 생성자가 있다.
Socket(String hostName,int port) : 지정된 호스트와 포트에 로컬 호스트를 접속하는 소켓을 생성한다. Socket(InetAddress ipAddress,int port) : 기존의 InetAddress 객체와 포트를 사용하여 소켓을 생성한다. |
일단 Socket객체를 생성했으면, 그 객체는 관련된 입력과 출력 스트림에 대한 엑세스를 얻기 위해 사용할 수 있다. 각각의 이 메서드들은 만일 소켓이 Net에서 접속의 손실에 의해 무효화되었으면 IOException이 발생할 수 있다. 이 스트림들은 데이터를 보내고 받기 위해 I/O스트림과 같게 사용된다.
InputStream getInputStream() : 이 소켓과 관련된 InputStream을 반환한다. OutpurStream getOutputStream() : 이 소켓과 관련된 OutputStream을 반환한다. |
3.2.5 채팅 과정
서버와 클라이언트의 소켓은 성질이 다른데 클라이언트의 소켓은 능동적으로 연결을 시도할 목적으로 만들어지는 반면 서버 소켓은 수동적으로 외부의 연결을 기다린다. 또 클라이언트는 하나의 서버에만 연결되므로 하나의 임시 포트를 사용하면 그만이다. 하지만 서버의 경우 하나의 포트를 한 클라이언트에 할당할 경우 다른 클라이언트를 지원할 수 없다. 따라서 서버 소켓은 외부에서 연결이 이루어졌을 경우 새로운 소켓을 반환하고 기존의 포트는 계속 사용할 수 있도록 해야 한다. 여기서 여러 클라이언트를지원하기 위해서는 필연적으로 멀티스레딩 기법이 사용되어야 한다. 소켓 쌍이 만들어지려면 우선 서버가 특정 포트에서 클라이언트의 연결을 기다려야 한다. 서버에서 사용되는 이러한 용도의 소켓은 자바에서는 ServerSocket클래스가 담당한다.
서버 소켓이 accept함수에서 접속을 기다리다가 클라이언트가 접속하면 accept함수는 새로운 소켓을 돌려준다. 서버에서는 이 소켓을 이용한 통신을 담당하는 새로운 스레드를 만드는 것이 좋은데 그렇게 해야만 서버가 다시 다른 클라이언트의 연결을 기다릴 수 있기 때문이다. 다음에는 데이터 전송이 가능한 소켓 쌍이 만들어지고 이젠 서로 통신을 시작할 준비가 된 것이다. 또한 기존의 서버 소켓은 다시 다른 클라이언트의 접근을 받아들이게 된다.
소켓을 이용한 서버와 클라이언트 연결에 대한 동작순서는 다음과 같다.
첫째. 서버가 소켓을 생성하고 연결을 기다린다.
둘째. 클라이언트에서 서버의 소켓에 연결한다.
셋째. 클라이언트에서 데이터를 전송한다.
넷째. 서버에서 데이터를 받아서 화면에 출력한다.
다섯째. 서버와 클라이언트의 소켓 연결을 끊는다.
3.2.6 대화창 폼 작성
첫째. 사용자대화명, 접속인원수를 표시할 수 있도록 작성한다.
둘째. TextField키워드를 이용하여 대화내용을 입력할 수 있도록 작성한다.
셋째. 대화내용을 표시할 수 있도록 작성한다.
Panel p1 = new Panel();
p1.setLayout(new BorderLayout());
commLabel = new Label("대화내용");
commList = new List();
p1.add(commLabel,"North");
p1.add(commList,"Center");
Panel p2 = new Panel();
p2.setLayout(new BorderLayout());
userLabel = new Label("사용자명",Label.CENTER);
userList = new List();
userLabel.setBackground(Color.yellow);
userCount = new Label("",Label.CENTER);
userCount.setBackground(Color.orange);
userList.setBackground(Color.orange);
p2.add(userLabel,"North");
p2.add(userList,"Center");
p2.add(userCount,"South");
p2.setBackground(Color.yellow);
Panel p3 = new Panel();
transTextField = new TextField(50);
transTextField.addActionListener(new ActionHandler());
transTextField.setBackground(Color.pink);
transmission = new Button("전송");
transmission.addActionListener(new ActionHandler());
p3.add(transTextField);
p3.add(transmission);
second.add(p1,"Center");
second.add(p2,"West");
second.add(p3,"South");
second.setBounds(200,0,800,640);
second.setVisible(true);
3.2.7 부가기능 추가
귓속말기능은 원하는 유저에게만 대화내용을 전달하고 다른 유저들은 대화내용을 모르게 하는 기능이다.
"귓속말"버튼을 만들고 클릭시 귓속말할 사용자이름을 입력할 새로운 프레임을 생성하고 귓속말할 사용자 이름을 받아들여 처리하는 이벤트 프로그램을 작성하고 "귓속말해제"버튼을 생성하여 클릭시 귓속말 상태에서 모든 유저가 대화내용을 볼 수 있는 상태로 전환이 된다. 프로그램작성 소스는 부록에 있다.
음악을 들으면서 채팅을 할 수 있는 기능을 만들었는데 이것은 AudioClip()기능과 Play()기능으로 쉽게 구현이 가능하다. 현재 자바가 지원하는 사운드 형식은 SUN의 AU 형식이다. 본 작품에서는 MP3 형식의 파일을 사운드툴(GoldWave) 프로그램으로 AU형식으로 바꾸어주었다.
채팅시 듣고싶은 음악을 AudioClip()기능으로 배열을 생성하면,
AudioClip touchTones[] = new AudioClip[];
음악갯수 만큼 버튼을 생성한다.
public Button NumberButton1;
NumberButton1 = new Button ("김민종-왜");
add ("South",NumberButton1);
NumberButton1.setBackground(Color.lightGray);
버튼이 클릭되어지면 getAudioClip()기능으로 불러올 파일을 결정하고 Play() 기능을 이용하여 음악파일을 연주한다.
public void init () {
int I;
String name;
name = "touchtone."+i+".au";
showStatus ("Getting "+name);
touchTones[i] = getAudioClip (getCodeBase(), name);
}
NumberButton1.addActionListener(this);
public void actionPerformed (ActionEvent ev)
{
Object object1 = ev.getSource();
if (object1 == NumberButton1)
touchTones[1].Play ();}}
제 4 장 결과 및 성능분석
4.1 채팅실행 과정
4.1.1 웹서버 가동
클라이언트가 웹브라우저로 서버에 접속할 수 있는 상태가 될수 있도록 웹서버를 가동한다.
4.1.2 서버 작동
클라이언트가 서버에 접속을 요청했을 경우 서버가 응답할수 있는 상태가 되게하기 위해 서버를 가동 한다.
4.1.3 서버에 접속하기
웹브라우저에서 호스트서버의 IP주소를 입력하여 접속한다.
4.1.5 채팅하기
4.2 부가기능
음악듣기 기능은 원하는 노래를 클릭시 음악을 제공 채팅하면서 들을수 있다.
귓속말 기능은 다른 유저에게는 대화내용을 보여주지않고 원하는 유저에게만 메시지를 보내는 기능이다.
세명이([영진],[의수],[순주]) 접속하고 [영진]이가 [순주]에게 귓속말을 보내면 [의수]는 대화내용을 보지 못하는 것을 알 수 있다.
4.3 성능분석
본 작품은 유저가 채팅을 하기위해 서버에 접속하면 소켓과 스레드를 생성하여 네트워크에서 메서지를 주고받을수있다. 여러명의 유저가 접속시 각각의 유저에게 스레드를 생성 다중 접속을 가능하게 하였다.
부가기능으로 채팅을 하면서 음악을 들을 수 있게 하였고 귓속말 기능을 추가하여 유저에게만 메시지를 보낼 수 있게 하였다.
문제점으로 많은 유저가 접속시 대화창에 대화내용이 약간의 시간차이를 두고 보여지지만 채팅을 하기에는 큰 문제점이 되지 않았다. 또 자바에선 음악파일형식을 AU형식만 지원하기 때문에 다른형태의 음악파일들은 사운드툴(GoldWavw)을 이용하여 변환시켜야 하는 번거로움이 있었으나 앞으로 자바언어의 발전으로 이러한 문제들은 빠른시일 안에 해결될것으로 보인다. .
제 5 장 결론
인터넷의 발전으로 각광을 받고있는 Java를 배우는데 있어서 기초가 되는 프로그램중에서 채팅 프로그램을 이용하여 논문을 완성시켰다.
Java가 인터넷시대에 각광받는 이유는 어느 환경에서도 실행이 가능하고, 보안성이 뛰어나며, 네트워크 상에서 다른 언어보다 유용하기 때문이다.
본 작품은 웹브라우저상에서 IP주소를 이용 채팅이 가능하도록 구현하였다. 또 채팅을 하면서 음악을 들을 수 있는 기능을 제공하며 간단하게 텍스트와 귓속말을 전송할 수 있는 채팅기능을 구현했고 웹서버는 아파치를 사용했다. 단순한 채팅뿐만 아니라 Java를 배우는데 있어서 기초가 되는 문법이나 웹연동에 대한 자료를 포함시켰다.
채팅을 하는데 있어서 상대방의 기본적인 정보를 알 수가 없고, 이미지가 없어서 단순해 보이는 경향이 있다. 또한 채팅 방이 하나밖에 없어 뜻이 맞는 사람끼리 대화를 할 수 없는데 이 점을 보완한다면 더욱 실용적인 프로그램이 될 것이다.
참 고 문 헌
[1] 이현우 외2 저, "Java Programming Bible Ver.2", (주)영진출판사, 99년 9월 20일
[2] 심재후 외2 저, "JAVA2 SCJP", 정보문화사, 99년 8월 14일
[3] Patrick Naughton 외1 저, "JAVA 사용자 가이드", 도서출판 삼각형, 97년 4월 20일
[4] Rogers Cadenhead 외2 저, "초보자를 위한 JAVA와 JAVA 워크샵",
인포북, 98년 3월 10일
[5] K.C.Hopson 외1 저, "프로패셔널 자바 애플릿", 도서출판 대림, 97년 1월 15일
[6] Laura Lemay 외1 저, "초보자를 위한 Java 1.2", 인포북, 98년 9월 5일