<4D F736F F F696E74202D20B3D7C6AEBFF6C5A9C7C1B7CEB1D7B7A1B9D65F FBCD2C4CF5FC3A4C6C35FBFA1C4DA2E BC8A3C8A

Similar documents
Microsoft PowerPoint - [EEL2] Lab10.pptx

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

Microsoft PowerPoint - 03-TCP Programming.ppt

PowerPoint 프레젠테이션

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

16장

Microsoft PowerPoint - 04-UDP Programming.ppt

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

<4D F736F F F696E74202D20C1A63235C0E520B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint Presentation

Microsoft PowerPoint - Lecture_Note_5.ppt [Compatibility Mode]

제1장 Unix란 무엇인가?

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

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

13-Java Network Programming

<4D F736F F F696E74202D20C1A63234C0E520C0D4C3E2B7C228B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint Presentation

<4D F736F F F696E74202D E20B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D62E >

Microsoft PowerPoint PythonGUI-socket

The Pocket Guide to TCP/IP Sockets: C Version

PowerPoint 프레젠테이션

2009년 상반기 사업계획

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint Presentation

PowerPoint Presentation

The Pocket Guide to TCP/IP Sockets: C Version

PowerPoint 프레젠테이션

자바-11장N'1-502

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

4장.문장

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

PowerPoint 프레젠테이션

Microsoft PowerPoint - Java7.pptx

PowerPoint Presentation

Network Programming

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

PowerPoint Presentation

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

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

PowerPoint 프레젠테이션

파일로출력하는작업순서 1. 파일을연다. 2. 파일로자료를쓴다. 3. 파일을닫는다. 파일입출력에사용되는클래스들. FileInputStream, FileOutputStream, FileReader, FileWriter 문자단위로입출력하기 사람이읽을수있는문자로만구성된파일을읽

쉽게

PowerPoint 프레젠테이션

Microsoft PowerPoint - 12 ¼ÒÄÏÀ» ÀÌ¿ëÇÑ Åë½Å 1.ppt

제11장 프로세스와 쓰레드

PowerPoint Presentation

슬라이드 1

Design Issues

Network Programming

TEST BANK & SOLUTION

제11장 자바 입출력

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

JAVA PROGRAMMING 실습 02. 표준 입출력

JAVA PROGRAMMING 실습 08.다형성

The Pocket Guide to TCP/IP Sockets: C Version

JAVA PROGRAMMING 실습 09. 예외처리

PowerPoint Presentation

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

Java ...

12-file.key

The Pocket Guide to TCP/IP Sockets: C Version

본 강의에 들어가기 전

ThisJava ..

쉽게 풀어쓴 C 프로그래밍

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

PowerPoint Presentation

Microsoft PowerPoint - 2강

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

Microsoft PowerPoint - Lect04.pptx

[제1강] 텍스트를 입력하세요

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

Java

쉽게 풀어쓴 C 프로그래밊

JUNIT 실습및발표

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

제1장 Unix란 무엇인가?

본 강의에 들어가기 전

Microsoft PowerPoint - CSharp-10-예외처리

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

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

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

PowerPoint Presentation

Microsoft PowerPoint - java1-lecture9.ppt [호환 모드]

RHEV 2.2 인증서 만료 확인 및 갱신

2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android=" 2 xmlns:tools="

PowerPoint Presentation

슬라이드 1

vi 사용법

PowerPoint Presentation

PowerPoint 프레젠테이션

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

Cluster management software

C++ Programming

PowerPoint 프레젠테이션

Chapter 4 UDP 소켓 사용법

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

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

슬라이드 1

Transcription:

학습목표 자바의소켓포트의개념을이해한다 네트워크프로그래밍 클라이언트통신프로그램의구조를이해한다 소켓과클라이언트소켓을구분하여이해한다 11 주소켓 - 애코김문정 tops@u1.ac.kr 2 포트 (port) 데이터송수신창구 0~65536 (0~1024 : well-known port) ServerSocket 클래스 ( 소켓 ) ServerSocket 클래스에사용되는클래스 java.net 패키지 주요생성자 ServerSocket(int port) 소켓을생성하여지정된포트번호에연결 3 4

ServerSocket 클래스 ( 소켓 ) 메소드 주요메소드 Socket accept() 설명 연결요청을기다리다연결요청이들어오면수락하고새 Socket 객체를반환 void close() 소켓을닫는다. InetAddress getinetaddress() int getlocalport() boolean isbound() boolean isclosed() void setsotimeout(int timeout) 소켓에연결된로컬주소반환 소켓이연결요청을모니터링하는포트번호반환소켓이로컬주소에연결되어있으면 true 반환 소켓이닫혀있으면 true 반환 accept() 에대한타임아웃시간지정 (0= 타임아웃해제 ) 5 Socket 클래스 ( 클라이언트소켓 ) 메소드설명 void close() 소켓을닫는다. void connect(socketaddress endpoint) 소켓을에연결 InetAddress getinetaddress() InputStream getinputstream() InetAddress getlocaladdress() int getlocalport() int getport() OutputStream getoutputstream() boolean isbound() boolean isconnected() boolean isclosed() 6 소켓이연결한의주소반환소켓에대한입력스트림반환소켓이연결된로컬주소반환소켓이연결된로컬포트번호소켓이연결한의포트번호소켓에대한출력스트림반환소켓이로컬주소에연결중인지소켓이에연결되어있는지소켓이닫혀있으면 true 반환 void setsotimeout(int timeout) 데이터읽기타임아웃시간지정. 0 이면타임아웃해제. 클라이언트와연결순서 클라이언트와연결는소켓으로들어오는연결요청을기다림 포트listen 클라이언트가에게연결요청 포트listen 클라이언트포트연결요청 가연결요청수락하고새로운소켓을만들어클라이언트와연결생성 포트listen 포클라이언트포트연결트작업순서 1. 소켓생성 2. 클라이언트로부터접속기다림 ( 소켓생성 ) 3. 네트워크입 / 출력스트림생성 4. 클라이언트로부터데이터수신 5. 클라이언트로데이터전송 6. 소켓종료 7. 소켓종료 7 8

작업순서 소켓생성클라이언트로부터접속기다림네트워크입출력스트림생성클라이언트로부터데이터수신클라이언트로데이터전송네트워크접속종료응용프로그램종료 작업순서 소켓생성 ServerSocket ssoc = new ServerSocket(5550); 이미사용중인포트번호를지정하면오류가발생 클라이언트로부터접속기다림 Socket soc = ssoc.accept(); accept() 메소드는연결요청이오면새로운 Socket 객체반환 에서클라이언트와의데이터통신 : 새 Socket 객체통해 ServerSocket 클래스는주어진연결에대해입출력스트림을만들어주는메소드가없음네트워크입출력스트림생성 BufferedReader in = new BufferedReader(new InputStreamReader(soc.getInputStream())); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(soc.getOutputStream())); accept() 메소드에서얻은 Socket 객체의 getinputstream() 과 getoutputstream() 메소드를이용하여데이터스트림생성 9 10 작업순서 클라이언트로부터데이터수신 Int x = in.read(); // 클라이언트로부터한개의문자수신 String line = in.readline(); // 클라이언트로부터한행의문자열수신 클라이언트작업순서 소켓생성및에접속 네트워크입 / 출력스트림생성 클라이언트로데이터전송 out.write("hi!, Client"+"\n"); flush() : 스트림속에데이터를남기지않고모두전송 네트워크접속종료 응용프로그램종료 ssoc.close(); 로데이터전송 로부터데이터수신 네트워크접속종료 11 12

클라이언트작업순서 소켓생성및에접속 Socket soc = new Socket("128.12.1.1", 5550); 네트워크입출력스트림생성 BufferedReader in = new BufferedReader( new InputStreamReader(soc.getInputStream())); BufferedWriter out = new BufferedWriter( new OutputStreamWriter(soc.getOutputStream())); 로데이터전송 out.write("hello"+"\n"); 실습 1 가보낸메시지를클라이언트가출력하는프로그램 로부터데이터수신 Int x = in.read(); // 한개문자수신 String line = in.readline(); // 한행수신 네트워크접속종료 13 14 public class ServerEx2 { ServerSocket ssoc = new ServerSocket(8899); System.out.println(" 클라이언트연결대기중 "); Socket soc = ssoc.accept(); System.out.println(" 클라이언트연결완료 "); String str = " 유원대학교스마트 IT 학과 ~"; BufferedWriter out = null ; out = new BufferedWriter(new OutputStreamWriter(soc.getOutputStream())); out.write(" >" + str + "\n"); out.close(); ssoc.close(); public class ClientEx2 { Socket soc = new Socket("localhost", 8899); System.out.println(" 연결완료 "); BufferedReader in = null; in = new BufferedReader(new InputStreamReader(soc.getInputStream())); String msg = in.readline(); System.out.println(" 받은메시지 : " + msg); in.close(); } } } } 15 16

실습 2 클라이언트는키보드로입력받아로전송하고 는받은데이터를출력하는프로그램 17 public class EchoServer1 { ServerSocket ssoc = new ServerSocket(8989); System.out.println(" 클라이언트연결대기중 "); Socket soc = ssoc.accept(); System.out.println(" 클라이언트연결완료 "); BufferedReader in = new BufferedReader(new InputStreamReader(soc.getInputStream())); String msg = in.readline(); System.out.println(" 받은메시지 : " + msg); in.close(); ssoc.close(); } } 18 public class EchoClient1 { Socket soc = new Socket("localhost", 8989); System.out.println(" 연결완료 "); BufferedReader stin = new BufferedReader(new InputStreamReader(System.in)); System.out.print(" 입력하세요 : "); String outmsg = stin.readline(); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(soc.getOutputStream())); out.write(" > " + outmsg + "\n"); out.close(); stin.close(); 실습 2-1 클라이언트 Scanner 를이용하여수정할것 19 20 } }

public class EchoClient1 { Socket soc = new Socket("localhost", 8989); System.out.println(" 연결완료 "); Scanner stin = new Scanner(System.in); System.out.print(" 입력하세요 : "); String outmsg = stin.nextline(); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(soc.getOutputStream())); out.write(" > " + outmsg + "\n"); out.close(); stin.close(); } } 21 실습 3 클라이언트는키보드로입력받아로전송하고 는받은데이터를출력하고다시클라이언트로전송하여 클라이언트도출력하는프로그램 22 소켓을이용한클라이언트 / 채팅예제 간단한채팅프로그램예제와클라이언트가 1:1 로채팅 소켓을이용한클라이언트 / 채팅예제 간단한채팅프로그램예제 와클라이언트간의메시지구분을위해는메시지앞에 > 을접두어로붙여메시지를전송클라이언트는 클라이언트 > 를접두어로붙여메시지전송와클라이언트가번갈아가면서메시지전송및수신클라이언트가 bye 를보내면프로그램종료 23 24

프로그램 소켓생성 ServerSocket ssoc = new ServerSocket(9999); 시스템에서사용되지않은포트번호로소켓생성 클라이언트요청대기 Socket soc = ssoc.accept(); 클라이언트가연결요청이올때까지소켓기다림해당포트번호로연결요청이오면 수락과함께새로운소켓을생성 새소켓으로클라이언트와통신새로운소켓의포트번호는자동으로할당 프로그램 클라이언트와통신을위한입출력스트림생성 BufferedReader in = new BufferedReader(new InputStreamReader(soc.getInputStream())); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(soc.getOutputStream())); 스트림을생성하여클라이언트와데이터송수신 데이터의종류에따라바이트스트림또는문자스트림을생성 채팅과같이문자열을송수신하는경우는문자스트림사용 효율적입출력을위하여버퍼스트림 (Buffered Stream) 사용 클라이언트의데이터수신 String inmsg = in.readline(); 스트림생성이후는데이터입력받는방법과동일클라이언트에서한행의문자열을보내올때까지기다림 25 26 프로그램 클라이언트에데이터송신 String outmsg = in.readline(); out.write(" > " + outmsg+"\n"); 스트림생성이후는일반데이터를출력하는방법과동일콘솔에서입력받은문자열을클라이언트로송신 flush() 메소드로스트림의모든데이터를클라이언트로송신 연결종료 ssoc.close(); 데이터의송수신이끝나면소켓을닫아야함소켓을닫으면소켓의입출력스트림도같이닫힘소켓을닫으면클라이언트연결요청을받을수없음 27 클라이언트프로그램 연결요청 soc = new Socket("localhost", 9999); 소켓생성 의호스트주소 가연결요청을모니터링하는포트번호로소켓생성예제는호스트이름을 localhost 로지정 동일한시스템에서와클라이언트가동작하기때문클라이언트와통신을위한입출력스트림생성 BufferedReader in = new BufferedReader(new InputStreamReader(soc.getInputStream())); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(soc.getOutputStream())); 스트림을생성하여와데이터송수신 데이터의종류에따라바이트스트림또는문자스트림사용 채팅과같이문자열을송수신하는경우는문자스트림사용 효율적입출력을위하여버퍼스트림 (Buffered Stream) 사용 28

클라이언트프로그램 에데이터송신 String outmsg = in.readline(); out.write(" 클라이언트 > "+outmsg+"\n"); 스트림생성이후는데이터출력방법과동일콘솔에서입력받은문자열을로송신 flush() 메소드로스트림의모든데이터를로송신클라이언트의데이터수신 String inmsg = in.readline(); 예제실행 프로그램을먼저실행시켜소켓으로연결요청을모니터링하며대기 스트림생성이후는데이터입력방법과동일에서한행의문자열을보내올때까지기다림연결종료 데이터의송수신이끝나면소켓을닫아야함소켓을닫으면소켓의입출력스트림도같이닫힘 29 30 예제실행 클라이언트프로그램을실행하여와연결을설정 클라이언트 예제실행 클라이언트에서먼저시작하여번갈아가면서순서대로메시지를주고받도록한다. 클라이언트 31 32

예제실행 클라이언트에서 bye 를입력하여채팅종료 클라이언트 33