6장. GCF (Generic Connection Framework)

Slides:



Advertisements
Similar presentations
컴퓨터와 인터넷.
Advertisements


CHAP 22. 블루투스.
Oozie Web API 기능 테스트 이승엽.
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 11장 프로세스간 통신 인공지능실험실 석사 2학기 이희재
5강. Servlet 본격적으로 살펴보기-I 프로젝트 만들기 doGet() doPost()
Ch.07-5 xml-rpc 사용하기 김상엽.
1. Windows Server 2003의 역사 개인용 Windows의 발전 과정
Network Lab. Young-Chul Hwang
PHP입문 Izayoi 김조흔.
소켓 모델 주소 지정 in_addr_t inet_addr(const char *ip_address) 연결 지향 모델 (TCP)
웹 서버 동작 HTTP 클라이언트가 서버와 대화하는 방법과 데이터를 서버에서 클라이언트로 전송 하는 방법을 정의한 프로토콜
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
31강 JAVA 네트워크 JAVA 네트워크 InetAdress, URLConnection 클래스 Socket의 이해
네트워킹 CHAPTER 13 Section 1 네트워킹의 개요와 java.net 패키지 Section 2 인터넷 주소와 URL
명품 JAVA Programming 제 16 장 네트워크.
Linux서버를 이용한 채팅프로그램 지도 교수님 : 이형원 교수님 이 름 : 이 은 영 학 번 :
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
8장. 원격지 시스템 관리하기.
네트워크 프로그래밍 Yang-Sae Moon Department of Computer Science
소리가 작으면 이어폰 사용 권장!.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
Chapter 06. UDP 서버/클라이언트.
모바일 자바 프로그래밍 JDBC / WAP Ps lab 오민경.
메시지 큐[5] – test1.c 메시지 제어: msgctl(2) #include <sys/msg.h>
Java의 정석 제 15 장 네트워킹(Networking) Java 정석 남궁성 강의
프로젝트 발표 순서 12/7(수), 팀 별 15분 발표순서 PPT (팀 별 이름, 구현 내용, 결과-그래프 포함) 각 기법당
Servlet 서블릿 기초 FORM 처리 서블릿의 API 세션과 쿠키 com.oreilly.servelet 패키지
Network Programming(1)
15장 네트워킹 15.1 네트워킹의 개요와 java.net 패키지 15.2 인터넷 주소와 URL 15.3 TCP 소켓
속성과 리스너 초기화 파라미터 외 파라미터에 대해 이해한다. 리스너를 생성해보고 사용에 대해 이해한다.
Chapter 5 UDP Socket 소켓 프로그래밍.
I/O&socket통신 POWERPOINT & GROUP STUDY 한재희 김상훈 최기람 황인준 이어진.
RMI Messenger 지도 : 김정배 교수님 조봉진.
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
Lesson 2. 기본 데이터형.
뇌를 자극하는 Windows Server 장. 원격 접속 서버.
자바 암호 프로그래밍 Java Cryptography Programming
8장 쿠키와 세션 한빛미디어(주).
CGI란 무엇인가? CGI(Common Gateway Interface)의 정의
MAIL CLIENT 김창우 윤성훈 이경재.
12장 쿠키와 세션 이장에서 배울 내용 : 쿠키와 세션은 웹 페이지 간에 정보를 유지할 때 사용된다. 쿠키와 세션은 사용되는 형태가 비슷하나, 쿠키는 웹 브라우저(클라이언트) 쪽에 저장되고, 세션은 웹 서버 쪽에 저장된다. 이 번장에서는 이들에 대해 학습한다.
자바로 만든 채팅 프로그램 임경진 조주경 지도교수님 : 이광세 교수님.
Packet sniffing 응용 레벨이 아닌 네트워크 디바이스 레벨에서의 데이타을 얻는 것 네트워크 상의 트래픽을 분석
15강. 폼 데이터 값 검증 Validator를 이용한 검증 ValidationUtils 클래스
8장 네트워크.
14강. 세션 세션이란? 세션 문법 Lecturer Kim Myoung-Ho Nickname 블스
CHAP 21. 전화, SMS, 주소록.
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
12강. 컨트롤러 컨트롤러 클래스 제작 요청 처리 메소드 제작 뷰에 데이터 전달
Introduction to JSP & Servlet
Chapter 04. TCP 서버/클라이언트.
~27 윤형기 Python 프로그래밍 (보충) ~27 윤형기
모바일(폰)메일 서비스 정흠수 최동훈.
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
JSP Programming with a Workbook
세션에 대해 알아보고 HttpSession 에 대해 이해한다 세션 관리에 사용되는 요소들을 살펴본다
MIDP 네트워크 프로그래밍 ps lab 김윤경.
발표자 : 이지연 Programming Systems Lab.
다자간 채팅프로그램 김형도 허영민
프로그래밍 언어 학습을 위한 가상실습환경 창원대학교 이수현.
소리가 작으면 이어폰 사용 권장!.
JSP Programming with a Workbook
Network Lab. Young-Chul Hwang
Completion Port기반의 채팅프로그램
CHAP 15. 데이터 스토리지.
AJAX? Cho Hyun Min.
중간 결과 보고 ( Server & Client )
소리가 작으면 이어폰 사용 권장!.
Presentation transcript:

6장. GCF (Generic Connection Framework)

Introduction 1. GCF 소개 2. MIDP HTTPConnection 프로그래밍 4. MIDP StreamConnection 프로그래밍 5. MIDP DatagramConnection 프로그래밍

GCF 소개 (1) J2SE, J2EE 환경과 J2ME 환경차이 의 함으로써 해결이 가능.

GCF 소개 (2) J2SE, J2EE 플랫폼의 java.io, java.net 패키지를 사용할 수 없음. GCF 개념 - 가능한 넓은 범위의 휴대 장치를 지원하기 위해 입출력과 네트워크 를 추상화하고, 실제 구현은 각 장치 제조업체가 하도록 설계 GCF 설계 목적 - 서로 다른 형태의 입출력 형태를 일관성있게 지원 - 서로 다른 형태의 프로토콜을 일관성있게 지원 - 어플리케이션 이식성 향상 - 표준 자바 클래스 라이브러리와 상위 호환 - 더 작은 메모리 풋프린트를 가짐

GCF 소개 (3) GCF 구조도

MIDP Connection 생성 (1) connection은 일관성을 유지하기 위해 Connector class의 open - static Connection open (String name)

MIDP Connection 생성 (2) J2ME CLDC/MIDP에서 Connection을 생성하고 데이터를 주고 받는 절차 open() 메소드를 이용해 Connection을 연다. Connection을 이용해 InputStream 또는 OutputStream을 만든다. 데이터를 송신하거나 수신한다. Connection과 Input/Output Stream을 반드시 닫는다.

MIDP Connection 생성 (3) 1. Connection 열기 Connector.open( "http://aaa.bbb.ccc:80") StreamConnection c = (StreamConnection) Connector.open("socket://aaa.bbb.ccc:1234") DatagramConnection c = (DatagramConnection) Connector.open(“datagram://aaa.bbb.ccc:1234) 2. InputStream or OutputStream 만듬 DataInputStream dis = c.openDataInputStream(); DataOutputStream dos = c.openDataOutputStream();

MIDP Connection 생성 (4) 3. 데이터 송/수신 dis.readChar() ; dos.writeChar(); 4. Connection과 Input/Output Stream 닫기 c.close(); dis.close(); dos.close();

GCF API 설명 (1) Connection 인터페이스 StreamConnectionNotifier 인터페이스 닫는 기능만 한다. StreamConnectionNotifier 인터페이스 - 연결이 설정될 때까지 기다리기 위해 사용되는 연결형 Connection DatagramConnection 인터페이스 - UDP/IP 통신을 위해서 데이터그램 종단을 표현하기 위한 연결형 Connection 을 생성 InputConnection 인터페이스 - 데이터를 읽어 들일 수 있는 장치를 지정하는 인터페이스

GCF API 설명 (2) OutputConnection 인터페이스 StreamConnection 인터페이스 - 데이터를 전송할 수 있는 장치를 지정하는 인터페이스 StreamConnection 인터페이스 - InputConnection과 OutputConnection을 통합하기 위한 인터페이스 ContentConnection 인터페이스 - HTTP 연결에 의한 기본적인 메타 데이터 정보에 대한 접근을 제공 Connection 인터페이스 - ContentConnection을 상속하였으며, HTTP1.1을 지원하기 위해 사용 Connector 클래스 - GCF에서 유일한 클래스이며, open() 메소드의 파라미터로 부터 요청 한 Connection을 형성하여 돌려 준다.

MIDP HTTPConnection 프로그래밍 HttpConnection 인터페이스를 사용 했을 때 장단점 - J2ME CLDC/MIDP를 구현한 디바이스에서 HTTP Connection의 지원은 필수이며, Socket, UDP등 기타 Connection의 구현은 선택 사항이다. 이식성이 우수 - HTTP Connection을 사용하면 방화벽에서 일반적으로 열어 두는 80포트 를 사용하기 때문에 네트워크 보안이나 방화벽 문제를 쉽게 처리 가능 - HTTP Connection의 Request에 XML의 데이터를 보내게 되면 다른 형태 의 데이터를 손쉽게 전송 - J2ME CLDC/MIDP는 HTTP 1.1 프로토콜의 서브 셋을 지원 - HTTP 프로토콜이 연결 지속성이 아니라서 Session관리를 위해서 별도의 노력을 기울여야 하는 단점

HTTP GET 방식 데이터 요청 예제 (1) GET 방식은 가장 많이 사용하는 방식으로 웹 서버에서 정보를 받기 위한 URL 형식 - http://127.0.0.1/midp/servlet/MyServlet?name=scott&num=10 구성 Servlet MIDlet HttpGetServlet HttpGetMIDlet Get 방식 요청 ID, PassWord 로그인 결과

HTTP GET 방식 데이터 요청 예제 (2) HttpGetServlet을 생성하고 GET 방식으로 요청을 설정하는 부분 hc = (HttpConnection)Connector.open(url + queryString); hc.setRequestMethod(HttpConnection.GET); getParameter() 메소드를 이용해 GET 방식 요청 // request로 부터 ID, PASSWORD를 얻어옴 id = request.getParameter("id"); password = request.getParameter("password");

HTTP GET 방식 데이터 요청 예제 (3) GET 요청을 위해 QueryString을 생성 queryString = "?" + "id=" + idField.getString() + "&" + "password=" + pwField.getString(); HttpConnection을 생성 // HTTP Connection을 생성 hc = (HttpConnection)Connector.open(url + queryString); RequestMethod로 GET 설정 // RequestMethod로 GET 설정 hc.setRequestMethod(HttpConnection.GET);

HTTP GET 방식 데이터 요청 예제 (4) HttpGetMIDlet 실행 화면

HTTP POST 방식 데이터 요청 예제 (1) GET 방식이 서버로부터 데이터를 받기 위한 목적으로 사용하는 것이라면 hc = (HttpConnection)Connector.open(url, Connector.READ_WRITE); hc.setRequestMethod(HttpConnection.POST); Servlet 예제 MIDlet 예제 Servlet은 클라이언트로부터 POST 방식 요청으로 UpperCase할 데이 터를 받은 후 결과를 클라이언트에 보낸다. 사용자로부터 UpperCase할 데이 터를 받은 후 Server에 Http Conn Ection의 POST 방식 요청을 보내 고 결과를 받아 출력한다.

HTTP POST 방식 데이터 요청 예제 (2) InputStream을 통해 데이터를 받음 (Servlet) BufferedReader inputStream = request.getReader(); // Input String을 받음 String line; String requeststring = ""; while (( line = inputStream.readLine()) != null) { requeststring = requeststring + line; HttpConnection을 생성(MIDlet) // HTTP Connection을 생성 hc = (HttpConnection)Connector.open(url, Connector.READ_WRITE);

HTTP POST 방식 데이터 요청 예제 (3) RequestMethod로 POST 생성(MIDlet) hc.setRequestMethod(HttpConnection.POST); OutputStream을 통해 데이터를 전달(MIDlet) // 서버로 부터 데이타를 받기 위해 outputStream 생성 out = hc.openDataOutputStream(); // 서버에 요청 스트링을 보낸다. byte[] request = requeststring.getBytes(); for (int i = 0; i < request.length; i++) { out.writeByte(request[i]); } out.flush();

HTTP POST 방식 데이터 요청 예제 (4) HttpPostMIDlet 실행 화면

HTTP HEAD 방식 데이터 요청 예제 GET 방식과 유사 서버는 HEAD에 대한 정보만 돌려 보낸다. HEAD 정보 HTTP/1.0 200 OK Data: Thu, 03 May 2002 16:04:09 GMT Server: NCSA/1.4.2 MIME-version: 1.0 Content-type: text/html Last-modified: Thu, 03 May 2002 16:03:27 GMT Content-length: 145 HEAD는 다음의 정보 확인을 위해 사용 Server 문서의 최근 modified 날짜 다운 받을 문서의 크기 – 다운 로드 진행 상태를 알 수 있다. Server Type – Server에 따른 Client 처리 문서 형식 – 클라이언트의 문서 지원 여부 확인

MIDP HTTPConnection 상태 유지 (1) 접속 상태를 유지하지 않는 프로토콜 한쌍의 Request – Reponse는 독립적으로 처리 Cookie 이란? Cookie는 클라이언트가 저장이 필요한 정보가 생길 때 마다 클라이언트 쪽에 일정한 형식의 데이터(Cookie)로 만들어 저장하고 필요한 서버와 서버의 디렉터리를 접근할 때 그 정보도 같이 서버에 보내주는 형태 Session이란? Session은 사용자의 정보를 유지 하기 위해 서버에 저장되는 Cookie라고 생각하면 된다

MIDP HTTPConnection 상태 유지 (2) Cookie 값 HTTP/1.1 200 OK Content-Type: text/plain Content-Length: 53 Date: Tue, 18 Dec 2001 17:19:22 GMT Server: Apache Tomcat/4.0.1 (HTTP/1.1 Connector) Set-Cookie: JSESSIONID=35E2621570C3B1D;Path=/midp 서버가 클라이언트의 접속에 대해 생성한 유일한 식별자

MIDP HTTPConnection 상태 유지 (3) 유일한 식별자인 JSESSIONID을 Cookie로 설정해 서버에 보낸다. hc.setRequestProperty("Cookie", sessionID); 서버의 응답으로부터 Cookie를 얻는다. String cookie = hc.getHeaderField("Set-Cookie"); Cookie 중에 유일한 식별자인 JSESSIONID을 얻는다. // cookie에서 JSESSIONID를 얻는다. if (cookie != null) { int index = cookie.indexOf(';'); sessionID = cookie.substring(0, index); }

MIDP HTTPConnection 상태 유지 (4) SessionMIDlet 실행 화면

MIDP StreamConnection 프로그래밍 StreamConnection 인터페이스는 연결 지향형 Connection을 지원. 한번 접속하면 접속 종료 전까지 계속적으로 데이터를 주고 받음. TCP/IP Daemon - 시스템의 특정 포트를 열고 Background에서 실행되는 프로세스 StreamConnecton을 생성하기 위해 Connector의 open() 메소드 이용 - StreamConnection sc =(StreamConnection) Connector.open("socket://java.sun.com:1500 " )

StreamConnection 예제 (1) StreamConnectionServer 작업 흐름도 ServerSocket을 열고 클라이언트의 접속 대기 InputStream을 이용해 클라이언트에서 온 데이터를 받음 OutputStream을 이용해 데이터를 클라이언트로 보냄 클라이언트 접속 접속 대기

StreamConnection 예제 (2) Server Socket 생성 // Server Socket 생성 server = new ServerSocket(port); Client 접속을 기다림 System.out.println("클라이언트가 접속 하였습니다."); InputStream을 생성하고 데이터를 받음 in = new DataInputStream(client.getInputStream()); // Client로 부터 메세지를 받음 String input = in.readUTF(); // Output 메세지(Reverse String) 생성 OutputStream을 생성하고 데이터를 보냄 out = new DataOutputStream(client.getOutputStream()); // Client에 결과 메세지를 보냄 out.writeUTF(output); out.flush();

StreamConnection 예제 (3) StreamConnectionMIDlet 작업 흐름도 StreamConnection을 생성 InputStream을 이용해 서버에 데이터 전송 OutputStream을 이용해 데이터를 받아 출력

StreamConnection 예제 (4) // Server와 StreamConnection(Socket)을 생성 sc = (StreamConnection) Connector.open (url, Connector.READ_WRITE, true); OutputStream 생성 후 데이터를 보냄 // Server에 reverse 할 String을 보냄 out = sc.openDataOutputStream(); out.writeUTF(reverseString); out.flush(); InputStream 생성 후 데이터를 받음 // InputStream 생성 in = sc.openDataInputStream(); // Server로 부터 reverse된 String을 받아 화면에 출력. String input = in.readUTF();

StreamConnection 예제 (5) StreamConnectionMIDlet 실행 화면

MIDP DatagramConnection 프로그래밍 Connector 클래스의 open 메소드를 사용 - (DatagramConnection) Connector.open ( " datagram:// java.sun.com:1500" ) 서버 모드의 DatagramConnection의 생성 - DatagramConnection dc = (DatagramConnection) Connector.open ( " datagram://:port " ) Connector.open ( " datagram://localhost:port " ) UDP (User Datagram Protocol) - IP를 사용하는 네트웍 내에서 컴퓨터들 간에 메시지들이 교환될 때 제한된 서비스만을 제공하는 통신 프로토콜이다. UDP는 TCP의 대안 - TCP와 마찬가지로 UDP도 한 컴퓨터에서 다른 컴퓨터로 데이터그램이라 고 불리는 실제 데이터 단위를 받기 위해 IP를 사용

DatagramConnection 예제 (1) DatagramConnectionServer - 클라이언트와 Datagram Connection을 유지하고 받은 데이터를 Reverse String으로 변환한 결과를 클라이언트로 보냄 1. DatagramSocket을 서버모드로 생성 // receive DatagramSocket 생성 recei = new DatagramSocket(port); 2. 클라이언트로부터 데이터를 받기 위해 DatagramPacket을 생성하고 데이 터를 기다림 rPacket = new DatagramPacket( buffer, buffer.length ); recei.receive(rPacket);

DatagramConnection 예제 (2) 3. 클라이언에 보낼 DatagramPacket을 생성 // Client에 보낼 DatagramPacket 생성 int sPort = rPacket.getPort(); InetAddress sAddress = rPacket.getAddress(); sPacket = new DatagramPacket( out, out.length, sAddress, sPort ); 4. 클라이언트에 데이터를 보냄 // 결과 DatagramPacket을 Client에 보냄 send = new DatagramSocket(); send.send( sPacket );

DatagramConnection 예제 (3) DatagramConnectionMIDlet 1. Server에 보낼 Datagram을 생성 후 데이터를 보냄 // DatagramConnection을 생성 dc = (DatagramConnection)Connector.open(sendUrl); // Server에 보낼 Datagram 생성 dgram = dc.newDatagram( reverseString.getBytes(), reverseString.getBytes().length, sendUrl); // Server에 Datagram을 보냄 dc.send(dgram); 2. Server로부터 받을 Datagram을 생성 후 Server로부터 데이터를 받음 // Server로 부터 받을 Datagram 생성 dgram = dc.newDatagram(128); dc.receive(dgram);

MIDP DatagramConnection 프로그래밍 (4) DatagramConnectionMIDlet 실행 화면