목차
1. 과제 목적
2. 과제 수행 및 분석
3)과제후기
2. 과제 수행 및 분석
3)과제후기
본문내용
or();
for (int i = 0; i < 16; i++) {
Integer num = (Integer) it.next();
if (num != null) {
int numKey = num.intValue();
track.add(makeEvent(144, 9, numKey, 100, i));
track.add(makeEvent(128, 9, numKey, 100, i+1));
//NOTE ON과 NOTE OFF 이벤트를 생성하고 추가.
}
}
}
public MidiEvent makeEvent(int comd, int chan, int one, int two, int tick) {
//메시지를 만들기 위한 인자 네개
MidiEvent event = null;
try {
ShortMessage a = new ShortMessage();
a.setMessage(comd, chan, one, two);
event = new MidiEvent(a, tick);
//유틸리티 메소드이다. 메소드 매개변수를 써서 메시지와 이벤트를 만든다.
}catch(Exception e) { }
return event;
//이벤트를 리턴한다.
}
}
2)MusicServer
import java.io.*;
import java.net.*;
import java.util.*;
public class MusicServer {//클라이언트의 출력 스트림을 목록화
ArrayList clientOutputStreams;
// main() 메소드
public static void main (String[] args){ // 음악서버 객체를 생성 후, go() 메소드 호출
new MusicServer().go();
}
public class ClientHandler implements Runnable {
ObjectInputStream in; //객체단위로 입력 받는 스트림 생성
Socket clientSocket; //클라이언트의 소켓, 클라이언트 접속시 생성
public ClientHandler(Socket socket){ // 생성자, 클라이언트의 소켓을 매개변수로 받는다.
try{
clientSocket = socket; //매개변수로 받은 클라이언트의 소켓을 초기화.
in = new ObjectInputStream(clientSocket.getInputStream());
//클라이언트의 입력스트림을 얻는 부분
} catch(Exception ex){ex.printStackTrace();} //예외 발생시 처리
}
public void run() { // 스레드가 시작될 때 호출되는 콜-백 메소드
Object o1 = null; //첫번째 객체
Object o2 = null; //두번째 객체
try{ //수신된 첫 번째 객체를 읽고, 더 이상 읽을 객체가 없을 때 까지 무한루프.
while((o1 = in.readObject()) != null) {
o2 = in.readObject(); // 두번째 객체를 읽어 들인다.
//두 개의 객체를 읽어 들였다는 메시지를 출력 후 TellEveryone()메소드 호출.
System.out.println("read two objects");
tellEveryone(o1, o2);
}
} catch(Exception ex){ex.printStackTrace();} // 예외 발생시 처리한다.
}
}
public void go() {
clientOutputStreams = new ArrayList();
try{
ServerSocket serverSock = new ServerSocket(4242);
//서버 소켓을 생성하여 현재 시스템에 4242번 포틀 fdufdj 서버 서비스 준비.
while(true) { //다수의 클라이언트 접속을 위해 무한루프 설정.
Socket clientSocket = serverSock.accept();
//accept()메소드를 호출해 클라이언트가 접속될 때 까지 기다린다(블럭킹 상태)
클라이언트 접속시 접속한 클라이언트의 소켓을 반환하여 ClientSocket에 할당.
ObjectOutputStream out = new ObjectOutputStream (clientSocket.getOutputStream());
//객체단위로 클라이언트에 출력하는 스트림을 얻는다.
clientOutputStreams.add(out);
//클라이언트 출력 스트림 목록 추가.
Thread t = new Thread(new ClientHandler(clientSocket));
t.start();
//클라이언트와 데이터 통신을 위한 핸들러를 생성, 스레드를 실행.
System.out.println("got a connection");
//클라이언트가 접속 되었다는 메시지 출력
}
}catch(Exception ex){ // 예외 발생시 처리.
ex.printStackTrace();
}
}
public void tellEveryone(Object one, Object two){
//클라이언트에게 수신받은 객체를 현재 서버에 접속한 모든 클라이언트에 전송하는 메소드
Iterator it = clientOutputStreams.iterator();
//현재 서버에 접속된 클라이언트 출력 스트림을 이터레이터로 얻어 옴.
while(it.hasNext()) { // 출력 스트림이 있다면 루프를 계속 돈다.
try{
ObjectOutputStream out = (ObjectOutputStream) it.next();
//목록으로부터 출력 스트림을 얻어 온다.
out.writeObject(one);
out.writeObject(two);
//객체단위로 클라이언트에게 객체를 전송.
} catch(Exception ex){ex.printStackTrace();}
}
}
}
3)과제후기
비트박스 프로그램은 메시지 전송 및 각종 효과음과 그림을 전송하는 비트 박스로서 비트박스를 구현함에 있어서 많은 자료들과 정보들이 필요하였습니다. 비트박스 프로그램을 이해하고 분석하고 구현하면서 비트박스 프로그램과 객체지향의 개념에 좀 더 친해진 것 같습니다.
for (int i = 0; i < 16; i++) {
Integer num = (Integer) it.next();
if (num != null) {
int numKey = num.intValue();
track.add(makeEvent(144, 9, numKey, 100, i));
track.add(makeEvent(128, 9, numKey, 100, i+1));
//NOTE ON과 NOTE OFF 이벤트를 생성하고 추가.
}
}
}
public MidiEvent makeEvent(int comd, int chan, int one, int two, int tick) {
//메시지를 만들기 위한 인자 네개
MidiEvent event = null;
try {
ShortMessage a = new ShortMessage();
a.setMessage(comd, chan, one, two);
event = new MidiEvent(a, tick);
//유틸리티 메소드이다. 메소드 매개변수를 써서 메시지와 이벤트를 만든다.
}catch(Exception e) { }
return event;
//이벤트를 리턴한다.
}
}
2)MusicServer
import java.io.*;
import java.net.*;
import java.util.*;
public class MusicServer {//클라이언트의 출력 스트림을 목록화
ArrayList clientOutputStreams;
// main() 메소드
public static void main (String[] args){ // 음악서버 객체를 생성 후, go() 메소드 호출
new MusicServer().go();
}
public class ClientHandler implements Runnable {
ObjectInputStream in; //객체단위로 입력 받는 스트림 생성
Socket clientSocket; //클라이언트의 소켓, 클라이언트 접속시 생성
public ClientHandler(Socket socket){ // 생성자, 클라이언트의 소켓을 매개변수로 받는다.
try{
clientSocket = socket; //매개변수로 받은 클라이언트의 소켓을 초기화.
in = new ObjectInputStream(clientSocket.getInputStream());
//클라이언트의 입력스트림을 얻는 부분
} catch(Exception ex){ex.printStackTrace();} //예외 발생시 처리
}
public void run() { // 스레드가 시작될 때 호출되는 콜-백 메소드
Object o1 = null; //첫번째 객체
Object o2 = null; //두번째 객체
try{ //수신된 첫 번째 객체를 읽고, 더 이상 읽을 객체가 없을 때 까지 무한루프.
while((o1 = in.readObject()) != null) {
o2 = in.readObject(); // 두번째 객체를 읽어 들인다.
//두 개의 객체를 읽어 들였다는 메시지를 출력 후 TellEveryone()메소드 호출.
System.out.println("read two objects");
tellEveryone(o1, o2);
}
} catch(Exception ex){ex.printStackTrace();} // 예외 발생시 처리한다.
}
}
public void go() {
clientOutputStreams = new ArrayList();
try{
ServerSocket serverSock = new ServerSocket(4242);
//서버 소켓을 생성하여 현재 시스템에 4242번 포틀 fdufdj 서버 서비스 준비.
while(true) { //다수의 클라이언트 접속을 위해 무한루프 설정.
Socket clientSocket = serverSock.accept();
//accept()메소드를 호출해 클라이언트가 접속될 때 까지 기다린다(블럭킹 상태)
클라이언트 접속시 접속한 클라이언트의 소켓을 반환하여 ClientSocket에 할당.
ObjectOutputStream out = new ObjectOutputStream (clientSocket.getOutputStream());
//객체단위로 클라이언트에 출력하는 스트림을 얻는다.
clientOutputStreams.add(out);
//클라이언트 출력 스트림 목록 추가.
Thread t = new Thread(new ClientHandler(clientSocket));
t.start();
//클라이언트와 데이터 통신을 위한 핸들러를 생성, 스레드를 실행.
System.out.println("got a connection");
//클라이언트가 접속 되었다는 메시지 출력
}
}catch(Exception ex){ // 예외 발생시 처리.
ex.printStackTrace();
}
}
public void tellEveryone(Object one, Object two){
//클라이언트에게 수신받은 객체를 현재 서버에 접속한 모든 클라이언트에 전송하는 메소드
Iterator it = clientOutputStreams.iterator();
//현재 서버에 접속된 클라이언트 출력 스트림을 이터레이터로 얻어 옴.
while(it.hasNext()) { // 출력 스트림이 있다면 루프를 계속 돈다.
try{
ObjectOutputStream out = (ObjectOutputStream) it.next();
//목록으로부터 출력 스트림을 얻어 온다.
out.writeObject(one);
out.writeObject(two);
//객체단위로 클라이언트에게 객체를 전송.
} catch(Exception ex){ex.printStackTrace();}
}
}
}
3)과제후기
비트박스 프로그램은 메시지 전송 및 각종 효과음과 그림을 전송하는 비트 박스로서 비트박스를 구현함에 있어서 많은 자료들과 정보들이 필요하였습니다. 비트박스 프로그램을 이해하고 분석하고 구현하면서 비트박스 프로그램과 객체지향의 개념에 좀 더 친해진 것 같습니다.
추천자료
[디지털음악][디지털음악유통][음반산업][음악산업][음반시장유료화]디지털음악(MP3, P2P, 디...
웹기반프로젝트학습(온라인프로젝트학습)의 정의와 특징, 웹기반프로젝트학습(온라인프로젝트...
프로젝트중심학습(PBL, 프로젝트기반수업)의 목표와 유형, 프로젝트중심학습(PBL, 프로젝트기...
프로젝트학습(PBL, 프로젝트중심수업)의 정의와 특징, 프로젝트학습(PBL, 프로젝트중심수업)...
프로젝트학습(PBL, 프로젝트기반수업) 구성과 진행단계, 프로젝트학습(PBL, 프로젝트기반수업...
프로젝트기반학습(프로젝트수업, PBL) 의의와 목적, 프로젝트기반학습(프로젝트수업, PBL) 발...
(A+ 레포트) 유아교육- 프로젝트 접근법의 이론적 배경과 활용 방안
(A+ 레포트) 유아교육- 프로젝트 접근법의 이론적 배경과 활용 방안
안드로이드 자동차 블랙박스 어플리케이션
국가부도 독후감 감상문 서평 요약 발터 비트만!!!!
[프로젝트 접근법] 프로젝트 접근법 목표, 프로젝트 접근법 수업 전개, 프로젝트 접근법 효과...
[중소기업 경영론] “코원”에 대한 분석 및 지속성장 전략
[e-비즈니스] 1) 암호화 알고리즘 중 PKI라고 불리는 공개키 방식 알고리즘 2) 암호화 화폐 ...
[e비즈니스] 1 암호화 알고리즘 중 PKI 공개키 방식 알고리즘 2 비트코인(Bitcoin)이나 이더...
소개글