Microsoft PowerPoint - [EEL2] Lab10.pptx

Similar documents
<4D F736F F F696E74202D20B3D7C6AEBFF6C5A9C7C1B7CEB1D7B7A1B9D65F FBCD2C4CF5FC3A4C6C35FBFA1C4DA2E BC8A3C8A

PowerPoint 프레젠테이션

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

Microsoft PowerPoint - 03-TCP Programming.ppt

<4D F736F F F696E74202D20C1A63235C0E520B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - 04-UDP Programming.ppt

자바-11장N'1-502

PowerPoint Presentation

16장

Microsoft PowerPoint - Lecture_Note_5.ppt [Compatibility Mode]

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

학습목표 네트워크개요 TCP PORT URL/InetAddress Socket/TCP 을이용한네트워크 2

PowerPoint 프레젠테이션

목차 INDEX JSON? - JSON 개요 - JSONObject - JSONArray 서울시공공데이터 API 살펴보기 - 요청인자살펴보기 - Result Code - 출력값 HttpClient - HttpHelper 클래스작성 - JSONParser 클래스작성 공공

12-file.key

PowerPoint Presentation

PowerPoint Presentation

PowerPoint 프레젠테이션

JAVA PROGRAMMING 실습 09. 예외처리

The Pocket Guide to TCP/IP Sockets: C Version

13-Java Network Programming

4장.문장

슬라이드 1

The Pocket Guide to TCP/IP Sockets: C Version

2009년 상반기 사업계획

Microsoft PowerPoint - Java7.pptx

Design Issues

rmi_박준용_final.PDF

<4D F736F F F696E74202D20C1A63234C0E520C0D4C3E2B7C228B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint PythonGUI-socket

PowerPoint 프레젠테이션

<4D F736F F F696E74202D E20B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D62E >

PowerPoint Presentation

Java ...

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345])

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

제11장 프로세스와 쓰레드

쉽게 풀어쓴 C 프로그래밊

JMF3_심빈구.PDF

PowerPoint 프레젠테이션

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

JAVA PROGRAMMING 실습 08.다형성

PowerPoint 프레젠테이션

Java

gnu-lee-oop-kor-lec06-3-chap7

Microsoft PowerPoint - java2-lecture7.ppt [호환 모드]

제1장 Unix란 무엇인가?

PowerPoint 프레젠테이션

PowerPoint Presentation

Network Programming

class InetAddress3{ public static void main(string[] args) throws Exception{ String url = null ; Scanner reader = new Scanner(System.in); System.out.p

PowerPoint Presentation

PowerPoint Presentation

PowerPoint 프레젠테이션

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

쉽게

02 C h a p t e r Java

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter

PowerPoint Presentation

C++ Programming

Cluster management software

JSP 의내장객체 response 객체 - response 객체는 JSP 페이지의실행결과를웹프라우저로돌려줄때사용되는객체이다. - 이객체는주로켄텐츠타입이나문자셋등의데이터의부가정보 ( 헤더정보 ) 나쿠키 ( 다음에설명 ) 등을지정할수있다. - 이객체를사용해서출력의방향을다른

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Microsoft PowerPoint - RMI.ppt

FileMaker ODBC and JDBC Guide

PowerPoint Presentation

비긴쿡-자바 00앞부속

TEST BANK & SOLUTION

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

The Pocket Guide to TCP/IP Sockets: C Version

슬라이드 1

(Microsoft PowerPoint - Chapter17 RMI.ppt [\310\243\310\257 \270\360\265\345])

3ÆÄÆ®-11

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

JAVA PROGRAMMING 실습 02. 표준 입출력

mytalk

교육자료

Semantic Consistency in Information Exchange

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

歯NetworkKawuiBawuiBo.PDF

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

Microsoft PowerPoint - CSharp-10-예외처리

쉽게 풀어쓴 C 프로그래밍

The Pocket Guide to TCP/IP Sockets: C Version

슬라이드 1

PowerPoint Presentation

. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요

Spring Boot

PowerPoint Presentation

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

쉽게 풀어쓴 C 프로그래밍

예외 예외정의예외발생예외처리예외전파 단정 단정의선언 단정조건검사옵션 2

쉽게 풀어쓴 C 프로그래밍

PowerPoint Template

17장 클래스와 메소드

Microsoft PowerPoint - Lect04.pptx

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

Microsoft PowerPoint - Supplement-02-Socket Overview.ppt [호환 모드]

Transcription:

Lab10 (Week 13) 네트워크프로그래밍 전자공학실험 2 Week13: 실습과제 (Lab10) Lab10 #1~#4 실습일실습시간종료시까지이메일로제출 이메일제목 : [EEL2] Lab10-Part1 Lab10 #5~#7 다음주실습시간시작시하드카피 ( 리포트 ) 로제출 리포트제목 : [EEL2] Lab10-Part2 최소 1 시간은실습실에서실습을진행해야합니다. 1. Telnet 을이용한 HTTP Client 흉내내기 1. Telnet 을이용한 HTTP Client 흉내내기 (cont d) 3 4 여러분이크롬이나 IE 와같은웹브라우저의역할을간단하게직접수행해보는과제입니다. Telnet program allows you to Type characters to send to a remote computer and View the characters that the remote computer sends back It is a useful tool to establish test connections with servers You can imitate the browser connection by using a dialog box or typing at the command line telnet java.sun.com 80 After Telnet starts, type the following without using backspace GET / HTTP/1.0 then hit Enter twice The server responds to the request with the file Telnet is not a browser It does not understand HTML tags so it just displays everything it was sent Next, repeat the same process by typing HEAD / HTTP/1.0 정확히입력 ( 수정불가 ) 1

1. Telnet 을이용한 HTTP Client 흉내내기 (cont d) 2. 소켓을이용한클라이언트 / 채팅 5 6 Show the results (with screen captures) Describe what you see, what you feel, and what you ve realized. 간단한채팅프로그램예제 와클라이언트가 1:1로채팅하는간단한예제 와클라이언트간의메시지구분을위해는메시지앞에 > 을접두어로붙여메시지를전송하며클라이언트는 클라이언트 > 를접두어로붙여메시지전송 와클라이언트가번갈아가면서메시지전송및수신 클라이언트가 bye를보내면프로그램종료 윈도우상에서 telnet 명령어가실행이안되면제어판을열어서해당프로그램을활성화해야함 프로그램 프로그램 7 8 소켓생성 ServerSocket listener = new ServerSocket(9999); 시스템에서사용되지않은포트번호로소켓생성 클라이언트와통신을위한입출력스트림생성 BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); 클라이언트요청대기 Socket socket = listener.accept(); 클라이언트가연결요청이올때까지소켓기다림 클라이언트의데이터수신 해당포트번호로연결요청이오면 String inputmessage = in.readline(); 수락과함께새로운소켓을생성 새소켓으로클라이언트와통신 새로운소켓의포트번호는자동으로할당 스트림생성이후는데이터입력받는방법과동일 클라이언트에서한행의문자열을보내올때까지기다림 2

프로그램 클라이언트프로그램 9 10 클라이언트에데이터송신 String outputmessage = stin.readline(); out.write(" >" + outputmessage+"\n"); flush() 메소드로스트림의모든데이터를클라이언트로송신 연결종료 socket.close(); listener.close(): 데이터의송수신이끝나면소켓을닫아야함 소켓을닫으면소켓의입출력스트림도같이닫힘 연결요청 socket = new Socket("localhost", 9999); 소켓생성 의호스트주소 가연결요청을모니터링하는포트번호로소켓생성 예제는호스트이름을 localhost 로지정 동일한시스템에서와클라이언트가동작하기때문클라이언트와통신을위한입출력스트림생성 BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); 스트림을생성하여와데이터송수신 클라이언트프로그램 실행 11 12 에데이터송신 String outputmessage = stin.readline(); out.write(" 클라이언트 >"+outputmessage+"\n"); 프로그램을먼저실행시켜소켓으로연결요청을모니터링하며대기 flush() 메소드로스트림의모든데이터를로송신 클라이언트의데이터수신 String inputmessage = in.readline(); 에서한행의문자열을보내올때까지기다림 연결종료 socket.close(); 데이터의송수신이끝나면소켓을닫아야함소켓을닫으면소켓의입출력스트림도같이닫힘 이클립스에서콘솔창을 2 개오픈후프로그램과클라이언트프로그램을각각실행시키는것도가능! 3

실행 실행 13 14 클라이언트프로그램을실행하여와연결을설정 클라이언트에서먼저시작하여번갈아가면서순서대로메시지를주고받도록한다. 클라이언트 클라이언트 실행 ServerEx.java ( 골격 PG- 빈곳을채워서완성 ) 15 클라이언트에서 bye 를입력하여채팅종료 클라이언트 public class ServerEx public static void main(string[] args) BufferedReader in = null; BufferedReader stin = null; BufferedWriter out = null; ServerSocket listener = null; Socket socket = null; try // 소켓생성 // 클라이언트로부터연결요청대기 System.out.println(" 연결됨 "); // 클라이언트로부터의입력스트림 stin = new BufferedReader(new InputStreamReader(System.in)); // 키보드로부터의입력스트림 // 클라이언트로의출력스트림 String inputmessage; while (true) inputmessage = in.readline(); // 클라이언트에서한행의문자열읽음 if (inputmessage.equalsignorecase("bye")) // 클라이언트가 "bye" 를보내면연결종료 break; System.out.println(inputMessage); // 클라이언트가보낸메시지화면에출력 String outputmessage = stin.readline(); // 키보드에서한행의문자열읽음 out.write(" >" + outputmessage+"\n"); // 키보드에서읽은문자열전송 catch (IOException e) System.out.println(e.getMessage()); finally try socket.close(); // 클라이언트와통신용소켓닫기 listener.close(); // 소켓닫기 catch (IOException e) System.out.println(" 클라이언트와채팅중오류가발생했습니다."); 4

ClientEx.java ( 골격 PG- 빈곳을채워서완성 ) 3. 과제 2 의수정 public class ClientEx public static void main(string[] args) BufferedReader in = null; BufferedReader stin = null; BufferedWriter out = null; Socket socket = null; try // 클라이언트소켓생성 // 로부터의입력스트림 // 키보드로부터의입력스트림 // 로의출력스트림 String outputmessage; while (true) // 키보드에서한행의문자열읽음 if (outputmessage.equalsignorecase("bye")) // "bye" 가입력되면메시지전송후연결종료 out.write(outputmessage); break; out.write(" 클라이언트 >"+outputmessage+"\n"); // 키보드에서읽은문자열전송 String inputmessage = in.readline(); // 에서한행의문자열읽음 System.out.println(inputMessage); // 가보낸메시지화면에출력 catch (IOException e) System.out.println(e.getMessage()); finally try socket.close(); // 클라이언트소켓닫기 catch (IOException e) System.out.println(" 와채팅중오류가발생했습니다."); 두사람씩한팀을이루고과제 2 의와클라이언트프로그램을각각두대의컴퓨터상에서실행한다. ( 각자의 IP 주소를먼저알아야함 ) 실행결과를검토의견과함께보이면됨 4. 사용자프로토콜을구현하는프로그램 SimpleProtocolServer class( 골격 PG) 다음과같은응용프로토콜을구현하는 / 클라이언트프로그램을작성해보자. Our Own Application Protocol (OOAP) Client 명령어 Server의응답 HELLO 안녕하세요방문자님 ECHO n n COUNT 현재까지 ECHO 요청횟수 QUIT 안녕히가세요! 다음의클래스가필요 : SimpleProtocolServer : 소켓구성후클라이언트연결요청대기및처리역할 SimpleProtocolService : 클라이언트명령어에따라프로토콜에정의된응답절차수행 SimpleProtocolClient : 클라이언트프로그램... public class SimpleProtocolServer public static void main(string[] args) throws IOException final int OOAP_PORT = 8888; // OOAP_PORT로소켓생성 System.out.println("Waiting for clients to connect..."); // 클라이언트로부터연결요청대기 System.out.println("Client connected.");.// 클라이언트소켓객체 s를인자로넘기면서 SimpleProtocolService 생성자호출..// SimpleProtocolService 객체에서클라이언트명령어처리하도록함. System.out.println("Closing connection\n\n also Closing sockets."); s.close(); server.close(); 5

SimpleProtocolService class ( 골격 PG) SimpleProtocolClient class ( 골격 PG) public class SimpleProtocolService private int count; private Socket s; private Scanner in; private PrintWriter out; public SimpleProtocolService(Socket asocket) s = asocket; count = 0; public void run() try in = new Scanner(s.getInputStream()); out = new PrintWriter(s.getOutputStream()); doservice(); catch (IOException exception) exception.printstacktrace(); finally try s.close(); catch (IOException e) e.printstacktrace(); public void doservice() throws IOException while (true) if (!in.hasnext()) return; String command = in.next(); if (command.equals("quit")) out.println(" 안녕히가세요!"); return; else executecommand(command); public void executecommand(string command) if (command.equals("hello")) out.println(" 안녕하세요방문자님!"); else if (command.equals("echo")) int n = in.nextint(); count++; out.println("" + n); else if (command.equals("count")) out.println("" + count);. public class SimpleProtocolClient public static void main(string[] args) throws IOException final int OOAP_PORT = 8888;.. // OOAP_PORT로소켓생성 InputStream instream = s.getinputstream(); OutputStream outstream = s.getoutputstream(); Scanner in = new Scanner(instream); Scanner stdin = new Scanner(System.in); PrintWriter out = new PrintWriter(outstream); while(true) // 키보드로부터입력받은명령어를로전송 // 로부터수신한응답메시지를콘솔에출력 // 사용자가 "QUIT" 을입력한경우로부터응답메시지를출력후종료 System.out.println("Closing connection"); s.close(); 5. < 과제 4 의업그레이드 > 6. 소켓프로그래밍 24 과제4의 OOAP / 클라이언트프로그램은동시에 1개의 / 클라이언트통신만이가능하다. 동시에 2개이상의 / 클라이언트통신이가능하도록하기위해서는 multi-threading 기법을사용하여야한다. 다음과같이과제4의클래스를변경 : SimpleProtocolServer : 소켓구성후, 무한루프 + 클라이언트연결요청대기및처리. 클라이언트연결요청시 SimpleProtocolService 타입의객체생성후 Thread() 생성자호출과함께객체를인자로넘겨줌. Thread 객체의 start() 메소드호출 클라이언트에서산술연산을에보내면는연산을수행하여결과를클라이언트에전송하는프로그램을작성하라. 연산자는 +, -, *, / 으로제한하며피연산자및결과는 double 타입의숫자로한다. 에수식을전송할때 = 은포함하지않는다. SimpleProtocolService : 클래스정의시 Runnable 인터페이스를구현하도록함. 클라이언트명령어에따라프로토콜에정의된응답절차수행 SimpleProtocolClient : 변경사항없음 6

7. 소켓프로그래밍 소켓을이용해서간단한를제작해보자는 EchoServer 라고불리우고클라이언트가보내면모든문자를다시보낸다. EchoServer 와 EchoClient 클래스를작성하여동시에실행시켜본다. 와클라이언트사이에주고받는문자열을화면에표시하라. 7