• 검색 결과가 없습니다.

자바네트워크 제6주

N/A
N/A
Protected

Academic year: 2022

Share "자바네트워크 제6주"

Copied!
61
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

자바네트워크 제6주

TCP 프로그래밍

(2)

제8장 TCP 프로그래밍

필요성

TCP 프로그래밍 기본

간단한 에코 클라이언트/서버 프로그래밍

멀티스레드를 이용한 에코 서버

간단한 웹서버 프로그래밍

간단한 찿팅 클라이언트/서버 프로그래밍

윈도우용 찿팅 클라이언트 작성

객체직렬화를 이용한 네트워크 프로그래밍

논의

(3)

필요성

TCP 프로그래밍은 네트워크 프로그램의 기본

(4)

TCP 프로그래밍 기본

연결된 소켓이 모두 닫힐 때 까지 통신

B

C

D E

A

B

C

D E

A

(5)

통신의 기본 동작

클라이언트

소켓 생성

소켓 으로 부터 InputStream과 OutputStream 생성 소켓 을 이용한 통신

소켓 의 close 호출

서버

서버소켓 생성

소켓 으로 부터 InputStream과 OutputStream 생성 소켓 을 이용한 통신

소켓 의 close 호출 서버소켓 accept 대기

접속이 되면 클라이언 트 연결 소켓 반환 소켓생성시 접속 시도

연결이 끊어질 때까지 통신

(6)

클라이언트의 접속 대기

로컬 컴퓨터 10001번 포트로 기다림

(7)

클라이언트 접속

로컬 컴퓨터 10001번 포트로 접속

(8)

소켓에서 InputStream, OutputStream 얻기

Socket Socket

Client Server

InputStream InputStream

OutputStream OutputStream

(9)

BufferedReader와 PrintWriter

(10)

접속 끊기

(11)

간단한 에코 클라이언트/서버 프로그램

• EchoServer

(12)

EchoClient

(13)

서버/클라이언트 실행

• 서버 프로그램 실행

도스 창 실행

D:\Lec_hwl\jnp\y2011\bin 폴더로 이동

java jnp/y2011/week5/EchoServer 로 실행

(14)

클라이언트 실행

Eclipse 에서 Run As 로 실행

문제점

한 곳에서만 접속 허용

(15)

멀티스레드를 이용한 에코 서 버

여러 클라이언트를 동시에 처리하지 못 한다.

스레드를 활용

(16)

동작 원리

ServerSocket 생성

accept로 대기

접속시도

Socket 반환 스레드 생성

Socket 젂달 Start 호출

Run 실행 In/OutStream

획득 통신

종료

(17)

멀티스레드 프로그램

• EchoThreadServer

main class

• EchoThread : Thread

Working thread

(18)

EchoThread class

(19)

EchoThreadServer

(20)

서버 실행

• 서버 프로그램 실행

도스 창 실행

D:\Lec_hwl\jnp\y2011\bin 폴더로 이동

java jnp/y2011/week5/EchoThreadServer 로 실행

(21)

간단한 웹서버 프로그래밍

• 웹 서버의 동작

request response

server client

(22)

HTTP protocol

http://www.w3.org/

http://www.ietf.org/rfc/rfc2616.txt

(23)

HTTP methods

(24)

HTTP status codes

(25)

HTTP status codes

(26)

브라우저 요청정보 출력

• SimpleWebServerBasic

(27)

브라우저의 요청

(28)

간단한 웹서버 프로그래밍

• 브라우저가 요청한 파일을 분석하여 클라이언 트로 젂송

File request

File search File analyze

File read Response

content

(29)

웹서버 동작

ServerSocket 생성

accept로 대기

접속시도

Socket 반환 스레드 생성

Socket 젂달 Start 호출

Run 실행 In/OutStream

획득

파일분석 및 회신

종료

(30)

클래스 계통도

ServerThread

WebServerThread

(31)

ServerThread 동작

• run() 함수에서 접속한 클라인언트의 주소를 알아내고 통신을 위한 Input/OutputStream을 얻어서 이를 doJob() 함수에 넘겨 준다.

• doJob() 함수에서 기본적인 회신만 하도록 한 다.

InetAddress InputStream OutputStream

단순 메시지 회신

run() 함수

doJob() 함수 호출

(32)

ServerThread run()

(33)

ServerThread doJob()

(34)

WebServerThread

• ServerThread를 상속받아서 doJob() 함수를 웹 문서를 처리하도록 구현한다.

ServerThread

WebServerThread

doJob() 구현

(35)

WebServerThread doJob()

(36)

SimpleWebServer의 문제점

• 브라우저가 요청한 임의의 파일을 찾아서 회 신해 준다.

폴더 구조를 아는 사람이 중요한 파일을 요청하 여 볼 수 있다.

http://localhost/.././../passwd.txt

(37)

간단한 찿팅 클라이언트/서버 프로그래밍

찿팅 클라이언트의 동작

1. 실행시 아이디와 서버 네임(IP)를 젂달한다

2. 다른 클라이언트 접속시 “XXX님이 접속했습니다“를 출력한 다.

3. 다른 사람의 입력 내용이 화면에 출력 된다.

4. 문자를 입력하면 접속된 모듞 클라이언트에 표시된다.

5. 종료하면, “XXX님이 접속 종료했습니다”를 출력한다.

(38)

찿팅 프로그램 동작

서버

클라이 언트 클라이

언트

클라이 언트

ID와 IP로 접속 ID와 IP로 접속

ID와 IP로 접속

(39)

찿팅서버의 기능

클라이언트 여러 개가 접속할 수 있어야 한다

클라이언트가 접속하면 이미 접속된 클라이언트에게 알린

클라이언트가 문자를 입력하면 접속한 모듞 클라이언트에 게 보낸다

클라이언트가 접속을 종료하면 모듞 클라이언트에게 알린

(40)

찿팅 서버

main

클라이언트 스레드

소켓

클라이언트 스레

HashMap ID/pw pair

(41)

찿팅서버 프로그램

Accept conenction Create serversocket

Create hashMap

Create ChatThread

(42)
(43)

ChatThread

ChatThread(sock, hm)

run()

sendMsg(msg)

broadcast(msg)

Application protocol

일반 메시지 : broadcast

귓속말 : /to id msg -> sendMsg

접속종료: /quit

(44)

서버 프로그램 실행

java –cp . jnp/y2011/week6/ChatServer

(45)

찿팅 클라이언트

main

출력 스레드

소켓

BufferedReader PrintWriter

(46)

찿팅클라이언트 프로그래밍

(47)

찿팅클라이언트 프로그래밍

(48)

InputThread

(49)

아쉬운 부분

찿팅 방이 하나 뿐임

(50)

윈도우용 찿팅 클라이언트 작 성

텍스트 입력창의 엔터키 이벤트 처리

서버로 부터 받은 문자 TextArea에 표시

(51)

대화 상자

(52)

WinChatClient

(53)

WinInputThread

(54)

객체직렬화를 이용한 네트워 크 프로그램밍

Socket Socket

Client Server

InputStream InputStream

OutputStream OutputStream

ObjetInputStream, ObjetOutputStream을 이용하여 네트워크를 통하여 객체를 주 고 받을 수 있다.

Object

(55)

구현 시나리오

간단한 사칙연산 서버

클라이 언트 서버

SendData 객체

String 객체

(56)

SendData class

(57)

ObjectCalculatorServer

(58)

ObjectCalculatorClient

(59)

ObjectCalculatorClient

(60)

직렬화는 간단하지만 무겁다

• 마샬링 언마샬링이 지속적으로 발생한다.

(61)

논의

• TCP는 신속한 반응을 요하는 경우에는 적당하 지 않을 수 있다.

• 자료의 젂송이 중요한 경우에는 적당하다.

참조

관련 문서

Messerschmitt, "Simulation of Multipath Impulse Response for Indoor Wireless Optical Channels, IEEE Journal on Selected Areas in Communications, Vol. Kahn, "Angle

In this work, processing techniques for producing microcellular silicon carbide with cell densities greater than 10 9 cells/㎤ and cells smaller than 30㎛ have

이를 위하여 ① 활성탄에 흡착된 유기물을 이용한 메탄 생성 가능 성을 확인하기 위해 BMP test와 ② 활성탄 흡착 유기물 사용의 이점을 확인하기 위한 탈착 실험, VFA

A study on development of outfitting modeling and automatic creating drawing system by AVEVA Marine..

int ai_family;//Family:AF_INET,AF_INET6,AF_UNSPEC int ai_socktype;//Socket type:SOCK_STREAM,SOCK_DGRAM int ai_protocol;//Protocol:0(default)or IPPROTO_XXX socklen_t

예술에 있어서 표현은 시대에 따라 끝없이 변화를 거듭했다.현 대미술은 자연을 있는 그대로 재현하는 고정관념을 거부하고 예술 가 자신의 독창성과 개성을

노드 (데이터 )별 연결된 사람들을 그룹 (모둠 )으로 표현 연결된 노드 (데이터 )의 그룹 (모둠 )을

Ⅴ장에서는 Ⅲ장과 Ⅳ장에서 다룬 분석 결과를 토대로 한중 통신 언어 문법화와 역문법화의 공통점과 차이점을 찾아내고자 한다.아울러 통신 언어의 생성 동기 및