Download presentation
Presentation is loading. Please wait.
1
8장 네트워크
2
개요 Network Class URL Class Socket Class Message Class HttpSocket Class
웹에서 이미지 다운로드 받기
3
네트워크 기초 TCP (Transmission Control Protocol)
두 시스템간의 신뢰성 높은 데이터 통신을 위한 연결 기반의 통신 프로토콜 UDP (User Datagram Protocol) 데이터그램이라 불리는 데이터 패킷들을 이용하여 통신하는 프로토콜
4
Network Class 응용 프로그램이 TCP/IP 인터넷 통신을 하기 위한 인터넷 접근 API .
5
Network 클래스의 주요 method public static int connect()
TCP/IP 인터넷 접근을 시도한다. public static void disconnect() TCP/IP 인터넷 접근을 종료한다.
6
URL Class 플랫폼 외부와의 데이타 통신을 위해 소켓을 생성해주는 클래스이다.
모든 소켓은 URL(RFC1738 참조) 방식으로 생성된다. URL 의 sheme 부분에 의해 생성되는 소켓의 성격이 구분된다. 소켓의 성격은 stream 소켓과 그렇지 않은 것으로 나뉜다.
7
URL 클래스의 주요 method public static Socket find(String url)
8
소켓이 TCP인 경우 socket://<IP주소>:<포트번호>[/<모드>/<타임아웃>] 모드: r(읽기 전용), w(쓰기 전용), rw(읽기쓰기 가능) 타임아웃: 밀리 초 단위. 0 이면 무한대 예) socket:// :80/rw/3000 모드와 타임 아웃은 데이터 송수신 때 적용되며 생략이 될 경우 디폴트로 모드는 "rw", 타임아웃은 "0”이다.
9
소켓이 UDP인 경우 datagram://:<포트번호>[/<모드>/<타임아웃>]
모드: r(읽기 전용), w(쓰기 전용), rw(읽기쓰기 가능) 타임아웃: 밀리 초 단위. 0 이면 무한대 예)datagram://:80/rw/3000 모드와 타임 아웃은 데이터 송수신 때 적용되며 생략이 될 경우 디폴트로 모드는 "rw", 타임아웃은 "0”이다.
10
소켓이 serial인 경우 comm://<포트번호>:<제어문자열>
제어 문자열은 HAL API와 관련된 것이다. 무선 단말기를 이용하여 통신하는 방법 중 하나인 시리얼 통신은 표준 플랫폼의 HAL에 정의되어 있다. 예를 들어 제어 문자열에는 baudrate는 통신 속도를 나타내는 것이다. 다음의 예는 모두 디폴트 값들이다. 예) comm://0:baudrate=115200,parity=no,size=8,flow=no
11
소켓이 Http인 경우 HTTP URL 예)
12
Socket Class Socket 클래스는 플랫폼 외부와의 데이터 통신을 가능하게 하는 인터페이스이다.
소켓은 스트림(stream) 소켓과 그렇지 않은 소켓으로 구분된다. 즉 스트림 소켓은 소켓을 통해서 스트림을 생성하고 스트림을 통해 데이터를 전송하며 그렇지 않은 경우 메시지(Message) 형태로 통신한다. 스트림 소켓의 대표적인 예가 TCP 통신을 하는 소켓이고 메시지형태로 통신을 하는 소켓의 대표적인 예가 UDP 통신을 하는 소켓이다
13
Socket 클래스의 주요 method public InputStream getInputStream()
public OutputStream getOutputStream() 스트림 소켓일 경우 OutputStream 을 반환한다. public boolean isStream() 스트림 소켓인지여부를 알려준다. public int getMessageCount() 스트림 소켓이 아닐 경우 앞으로 이 소켓으로부터 읽을 수 있는 메시지 개수를 알려준다. public int getMessageMaxLength() 스트림 소켓이 아닐 경우 한 메시지에 실을 수 있는 데이터의 최대길이를 알려준다.
14
Socket 클래스의 주요 method public void send(Message m)
스트림 소켓이 아닐 경우 메시지를 전송한다. public void recv(Message msg) 스트림 소켓이 아닐 경우 메세지를 수신한다. public void close() 소켓을 닫는다. 스트림 소켓일 경우 만약 getInputStream() 이나 getOutputStream() 으로 InputStream 혹은 OutputStream 을 반환한 경우 소켓이 완전히 닫히기 위해서는 이 메소드와 함께 InputStream 혹은 OutputStream 의 close() 메소드가 불려 져야 한다. public Socket accept() 서버 기능을 지원하는 소켓이 새롭게 클라이언트와 연결된 소켓을 반환한다.
15
Message Class 소켓으로 전송할 수 있는 메시지를 정의한 클래스이며 UDP통신의 단위이다.
신뢰가 보장되어야 하는 통신에는 사용할 수가 없을 것이며 전송되는 패킷 중에서 분실해도 크게 상관없는 서비스에 주로 사용될 수 있다. 일례로 영상파일 같이 약간의 패킷 손실이 있어도 동영상 재생에 크게 문제되지 않는 서비스가 있을 것이다
16
Message 클래스의 주요 생성자 public Message(java.lang.String addr, byte[] data)
소켓으로 전송할 메시지를 생성한다. public Message(java.lang.String addr, byte[] data, int off, int len) 매개변수 addr 메시지 주소 data 메시지 버퍼 off 메시지 버퍼의 오프셋 len 메시지 버퍼의 길이
17
Message 클래스의 주요 method public byte[] getData() public int getLength()
메시지 버퍼를 반환한다. public int getLength() 메시지 버퍼의 길이를 반환한다. public int setLength(int val) 메시지 길이를 설정한다. public int getOffset() 메시지 버퍼의 오프셋을 반환한다. public int setOffset(int val) 메시지 버퍼의 오프셋을 설정한다.
18
Message 클래스의 주요 method public String getAddress()
메시지의 주소를 반환한다. public int getAddressInt() public Date getDate() 메시지가 전송된 시간을 반환한다. public void getDate(Date date) 메시지가 전송된 시간을 설정한다. public void getAddressInt(int addr) 메시지의 주소 값을 지정한다.
19
HttpSocket Class HTTP 연결에 관련된 소켓 인터페이스로서 HTTP프로토콜의 대부분을 제공한다.
20
HttpSocket 클래스의 주요 method
public void close() HTTP 소켓을 닫는다. public InputStream getInputStream() InputStream을 반환한다. public OutputStream getOutputStream() OutputStream을 반환한다. public String getURL() URL을 반환한다. public String getProtocol() URL의 프로토콜 부분을 반환한다. public String getHost() URL의 호스트 부분을 반환한다. public String getFile() URL의 파일 부분을 반환한다.
21
HttpSocket 클래스의 주요 method
public String getRef() URL의 앵커 부분을 반환한다. public String getQuery() URL의 쿼리 부분을 반환한다. public int getPort() URL의 포트 부분을 반환한다. public String getRequestMethod() 요청 메소드를 반환한다. public void setRequestMethod(String method) 요청 메소드를 설정한다. public String getRequestProperty(String key) 매개변수 key 에 해당하는 request property 값을 반환한다. public void setRequestProperty(String key, String value) request property를 설정한다.
22
HttpSocket 클래스의 주요 method
public int getResponseCode() 서버의 응답코드를 반환한다. public String getResponseMessage() 서버의 응답 메시지를 반환한다. public long getLength() 수신한 컨텐트의 길이를 바이트 단위로 반환한다. public String getType() 수신한 컨텐트의 타입을 반환한다. public String getEncoding() 수신한 컨텐트의 인코딩을 반환한다. public long getExpiration() 컨텐트의 만료일을 반환한다.
23
HttpSocket 클래스의 주요 method
public long getDate() 컨텐트의 작성일을 반환한다. public long getLastModified() 컨텐트의 최근 수정시간을 반환한다. public String getHeaderField(String name) 서버로부터의 응답 헤더 값을 반환한다. public void setProxy(String host, int port) HTTP 프락시를 지정한다. public boolean isRelocatable() 컨텐츠의 위치가 옮겨져서 서버가 다른 서버로의 접속을 유도하는 경우를 알려 준다. public HttpSocket relocation() 컨텐츠의 위치가 옮겨져서 서버가 다른 서버로의 접속을 유도하여 다른 서버로 접속하여 새로운 HTTP 소켓을 반환한다.
24
예제 8-1
Similar presentations