8장 서버 소켓 프로그래밍 언어 실험실 석사 3학기 김성중.

Slides:



Advertisements
Similar presentations
Computer Network Lab UDP 데이터그램 과 소켓 강 동 호 컴퓨터 네트워크 실험실.
Advertisements

Computer Network Lab 다중전송 소켓 컴퓨터 네트워크 실험실 이 희 규, 조 한 진.
Chap15 네트워킹 Section 1 : 네트워킹의 개요와 java.net 패키지 Section 2 : 인터넷 주소와 URL Section 3 : TCP 소켓 Section 4 : UDP 소켓.
정보 보안 개론과 실습 네트워크 해킹과 보안 3부 해킹 전 정보 획득 Chapter 10. 목록화.
1 안드로이드 네트워킹 안드로이드 앱 프로그래밍 여 규리.
11장. 프로토콜 핸들러 AI &HC I LAB 김 성 현.
목차 소켓이란 무엇인가 Socket클래스의 생성자 소켓에 관한 정보 알아내기 소켓 닫기 소켓 옵션 설정하기 소켓 예외
CHAP 22. 블루투스.
Oozie Web API 기능 테스트 이승엽.
Socket Programming 소개.
김태원 심재일 김상래 강신택. 김태원 심재일 김상래 강신택 인터넷 통신망의 정보를 제공하는 서비스 인터넷의 자원 및 정보는 NIC가 관리 IP주소 또는 도메인으로 정보 검색 이용자 및 통신망 관한 정보를 제공.
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 11장 프로세스간 통신 인공지능실험실 석사 2학기 이희재
최윤정 Java 프로그래밍 클래스 상속 최윤정
Ch.07-5 xml-rpc 사용하기 김상엽.
Network Lab. Young-Chul Hwang
PHP입문 Izayoi 김조흔.
소켓 모델 주소 지정 in_addr_t inet_addr(const char *ip_address) 연결 지향 모델 (TCP)
Chap11 네트워킹 11.1 네트워킹의 개요와 java.net 패키지 11.2 인터넷 주소와 URL 11.3 TCP 소켓
Inetd Daemon의 이용 VLSI 석사 3학기 고재현.
제 14장 Multicast & Broadcast
31강 JAVA 네트워크 JAVA 네트워크 InetAdress, URLConnection 클래스 Socket의 이해
네트워킹 CHAPTER 13 Section 1 네트워킹의 개요와 java.net 패키지 Section 2 인터넷 주소와 URL
명품 JAVA Programming 제 16 장 네트워크.
명품 JAVA Programming 제 16 장 네트워크.
자바네트워크 제9주 TCP/IP 클라이언트 소켓 컴퓨터시뮬레이션학과 2014년 봄학기 담당교수 : 이형원
8장. 원격지 시스템 관리하기.
Chap08 다중 스레드 8.1 스레드 개요 8.2 Thread 클래스와 스레드 생명주기 8.3 스레드 생성과 사용
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
Chapter 06. UDP 서버/클라이언트.
NJM Messenger 박상원 박연호.
01. DHCP의 개념 조직의 네트워크에 연결되어 있는 워크스테이션의 TCP/IP 설정을 자동화하기 위한 표준 프로토콜
Power Java 제14장 배치 관리자.
Java의 정석 제 15 장 네트워킹(Networking) Java 정석 남궁성 강의
프로젝트 발표 순서 12/7(수), 팀 별 15분 발표순서 PPT (팀 별 이름, 구현 내용, 결과-그래프 포함) 각 기법당
Socket Address Structure and Byte Ordering Functions
10장. 예외처리.
제 01 장 인터넷 프로그래밍 개요 학기 인터넷비즈니스과 강 환수 교수.
15장 네트워킹 15.1 네트워킹의 개요와 java.net 패키지 15.2 인터넷 주소와 URL 15.3 TCP 소켓
Chapter 5 UDP Socket 소켓 프로그래밍.
I/O&socket통신 POWERPOINT & GROUP STUDY 한재희 김상훈 최기람 황인준 이어진.
시스템 인터페이스 Lab3 Unix 사용법 실습.
RMI Messenger 지도 : 김정배 교수님 조봉진.
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
제 15 장 BOOTP와 DHCP BOOTP 15.2 동적 호스트 설정 프로토콜.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
자바 암호 프로그래밍 Java Cryptography Programming
오라클 넷(Oracle Net)의 개념 및 구성
CGI란 무엇인가? CGI(Common Gateway Interface)의 정의
자바 5.0 프로그래밍.
자바로 만든 채팅 프로그램 임경진 조주경 지도교수님 : 이광세 교수님.
15강. 폼 데이터 값 검증 Validator를 이용한 검증 ValidationUtils 클래스
CHAP 21. 전화, SMS, 주소록.
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
01. DHCP의 개념 조직의 네트워크에 연결되어 있는 워크스테이션의 TCP/IP 설정을 자동화하기 위한 표준 프로토콜
01. 개요 네트워크에 있는 컴퓨터와 그룹에 대한 NetBIOS 이름에 대응되는 IP 주소를 찾아주는 서비스
웹(WWW).
12강. 컨트롤러 컨트롤러 클래스 제작 요청 처리 메소드 제작 뷰에 데이터 전달
Chapter 27 Mobile IP.
Introduction to JSP & Servlet
Chapter 04. TCP 서버/클라이언트.
JSP Programming with a Workbook
세션에 대해 알아보고 HttpSession 에 대해 이해한다 세션 관리에 사용되는 요소들을 살펴본다
MIDP 네트워크 프로그래밍 ps lab 김윤경.
발표자 : 이지연 Programming Systems Lab.
다자간 채팅프로그램 김형도 허영민
인공지능실험실 박사 1학기 장성만 TCP/IP Socket Programming… 제 8장 도메인 이름과 인터네 주소 인공지능실험실 박사 1학기 장성만
Power Java 제14장 배치 관리자.
Network Lab. Young-Chul Hwang
Completion Port기반의 채팅프로그램
JAVA 프로그래밍 16장 JNLP.
Presentation transcript:

8장 서버 소켓 프로그래밍 언어 실험실 석사 3학기 김성중

제 8장 목차 서버 소켓이란 무엇인가 ServerSocket 클래스 유용한 서버들 생성자들 연결 요청 받기와 연결을 끊기 get 메소드들 소켓 옵션들 객체 메소드들 구현 유용한 서버들 PL Lab

서버 소켓이란 무엇인가 소켓 : 네트워크 작업을 바이트 단위로 읽고 쓸 수 있는 스트림처럼 처리 원격 기계에 접속 (데이터를 보내고 받을 준비를 한다.) 데이터를 보낸다. 데이터를 받는다. 연결을 끊는다. 포트에 바인드 한다. 들어오는 데이터에 귀를 기울인다. (listen) 바인드 된 포트를 통해 들어오는 원격 기계의 접속 요청을 받는다. PL Lab

ServerSocket 클래스 자바로 서버를 작성하는 데 필요한 모든 것을 포함. 서버의 기본적인 라이프 사이클 2. accept()메소드를 사용, 연결 요청 신호에 대기 - 연결시 Socket 객체를 반환. 3. 서버의 유형에 따라, getInputStream(), getOutputStream() 4. 서버와 클라이언트는 연결이 끊길때까지 합의된 프로토콜에 따라 대화. 5. 서버, 클라이언트 또는 양쪽에서 연결 종료 6. 서버는 2단계로 돌아가, 다음 연결을 대기 4단계..무한정 길어질경우 wu-ftpd와 같은 유닉스 서버는 각각의 연결을 처리하기 위해 새로운 프로세스를 생성. 자바는 서버가 다음 연결을 처리할 준비를 하도록 하기 위해 클라이언트와 대화할 쓰래드를 생성. - 서버에 무리를 덜.... 특정한 포트로 들어오는 연결 요청 신호를 선입선출 큐(quee)에 저장하는 것은 운영체제의 임무. 큐의 길이는 일반적으로 50, 운영체제마다 다르다. PL Lab

생성자들(1) public ServerSocket(int port) throws IOException, BindException 지정된 포트에 대해 ServerSocket생성 포트 0면 사용 가능한 임의의 포트 선정(anonmous port) try{ ServerSocket httpd = serverSocket(80); } catch(IOException e) { System.err.println(e) 발생할 수 있는 예외상황 이미 사용중인 포트 1~1023포트: 루트 권한 PL Lab

생성자들(2) public ServerSocket(int port, int queuelength) throws IOException, BindException 지정된 포트, 지정된 크기의 큐를 갖는 ServerSocket생성 포트 0면 사용 가능한 임의의 포트 선정(anonmous port) queuelength: 연결요청 신호의 수 try{ ServerSocket httpd = serverSocket(5776, 100); } catch(IOException e) { System.err.println(e) 발생할 수 있는 예외상황 이미 사용중인 포트 1~1023포트: 루트 권한 queuelength보다 크면, 연결 요청을 거절. 최대 큐의 길이보다 큰 값을 설정하면 큐의 길이는 기본값으로 대체. PL Lab

생성자들(3) public ServerSocket(int port, int queuelength, InetAddress bindAddress) throws IOException, BindException 지정된 포트, 지정된 크기의 큐를 갖는 ServerSocket생성 queuelength: 연결요청 신호의 수 지정된 로컬 IP주소에 대해 바인드 발생할 수 있는 예외상황 이미 사용중인 포트 1~1023포트: 루트 권한 PL Lab

생성자들(3) - 예 North Carolina에 SPARC 스테이션 (2개의 네트워크 인터페이스) 1. sunsite.unc.edu (IP: 152.2.254.81, 100Mbps의 FDDI ) 2. calzone.unc.edu (IP: 152.22.81, 10Mbps의 이더넷 카드) try{ ServerSocket httpd = serverSocket(5776, 100, InetAddress.getHostByName("sunsite.unc.edu")); } catch(IOException e) { System.err.println(e) PL Lab

생성자들(4) protected ServerSocket() 프락시 서버를 통과 하거나 보안 프로토콜을 구현하기 위해서 자신만의 SocketImpl을 제공하고자 하는 ServerSocket의 서브 클래스를 위해 사용 PL Lab

연결 요청 받기와 연결을 끊기 accept() 메소드를 호출 - 봉쇄(block) accept() 메소드는 Socket 객체를 반환 getInputStream(), getOutputStream() 메소드 결과사용 try { ServerSocket theServer = new ServerSocket(5776); while(true) { Socket theConnection = theServer.accept(); PrintStream p = new PrintStream ( theConnection.getOutputStream()); p.println("You've connected to this server. Bye-bye now."); } } catch (IOException e) { System.err.println(e); } accept() 메소드를 호출 - 봉쇄(block) 프로그램의 실행을 멈추고, 클라이언트로부터 연결 요청 신호가 올 때까지 기다린다. PL Lab

예제 결과 서버 [cse]server> java accept ^C [cse]server> 클라이어트 [ce]client> telnet cse 5776 Trying 203.247.40.31... Connected to cse.hannam.ac.kr. Escape character is '^]'. You've connected to this server. Bye-bye now. Connection closed by foreign host. [ce]client> PL Lab

daytime 서버 [ce] client>telnet cse 13 Trying 203.247.40.31... Connected to cse.hannam.ac.kr. Escape character is '^]'. Fri May 26 07:18:02 2000 Connection closed by foreign host. [ce] client> [ce] client>telnet cse 1313 Thu May 25 15:20:11 PDT 2000 : Seong_Jung PL Lab

public void close() throws IOException ServerSocket의 닫기 로컬 포트의 사용 해제 Socket의 닫기 로컬 호스트와 원격 호스트간의 연결 해제 PL Lab

get 메소드들 public InetAddress GetInetAddress() public intGetLocalPort() 로컬호스트에서 사용되는 주소 반환 [cse]server> java getIPAddr IP Address : 0.0.0.0/0.0.0.0 [cse]server> public intGetLocalPort() 소켓이 사용중인 포트번호 반환 포트번호 0으로 ServerSocket생성시 임의의 포트번호 선정 peer-peer방식의 멀티 소켓 프로그램에서 자신의 포트번호 [cse]server>java anon This server runs on port 43620 at 0.0.0.0/0.0.0.0 PL Lab

소켓 옵션들 SO_TIMEOUT accept()메소는 java.io.InterruptedIOException이 발생할 때까지 연결 요청을 기다린다. SO_TIMEOUT이 0 이면, 무한정 public synchronized void setSoTimeout(int timeout) throws SocketException SO_TIMEOUT 필드의 값을 설정 public synchronized int getSoTimeout() throws IOException 현재 ServerSocket의 SO_TIMEOUT 필드의 설정값 반환 PL Lab

SO_TIME필드 관련 메소드 예제 결과 setSoTimeut()메소드: [cse]server> java timeOut No connenction within 30 seconds [cse]server> getSoTimeout() 메소드 [cse]server> java getTimeOut ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=43626] will time out after 30 000 milliseconds PL Lab

객체 메소드들, 구현 객체 메소드들 구현 public String toString() 자바 1.0 자바 1.1 객체 메소드들, 구현 객체 메소드들 public String toString() addr은 항상 0.0.0.0, port는 항상 0 자바 1.0 ServerSocket[addr=0.0.0.0,port=0,localport=5776] 자바 1.1 ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=4000] 구현 public static synchronized void setSocketFactory (SocketImplFactory fac) throws IOException public final void implAccept(Socket s) throws IOException ServerSocket의 서브클래스들은 accept()를 구현하기 위해 PL Lab

유용한 서버들 클라이언트 테스트기 교재 240쪽 클라이언트로부터 입력, 서버로부터 출력의 2개의 쓰레드 3개의 클래스 clientTester InputThread OutputThread clientTester - 포트번호를 읽고 그 포트에 대해 서버 소켓을 생성 연결요청 대기 InputThread - 한번에 한바이트씩 읽어..char형으로 변환후 System.out에 출력 OutputThread - System.in으로부터 읽어들여 클라이언트에 전송. PL Lab

clientTester 실행 - 서버측 [cse] server>java clientTester 2000 Listening for connections on port 2000 connenction established with Socket[addr=cse.hannam.ac.kr/203.247.40.31,port=436 29,localport=2000] Hannam Univ. Computer Java Network Programming . ^C[cse] server> PL Lab

clientTester 실행 - 클라이언트측 [cse] client>telnet cse.hannam.ac.kr 2000 Trying 203.247.40.31... Connected to cse.hannam.ac.kr. Escape character is '^]'. Hannam Univ. Computer Java Network Programming Connection closed by foreign host. [cse] client> PL Lab

HTTP 서버 HTTP 서버 단 하나의 파일을 서비스하는 서버 방향 재지정기 완전한 HTTP 서버 파일에 대한 요청에 응답 URL을 로컬 시스템의 파일이름으로 변환 POST, GET방식의 요청을 처리 MIME 형식 해석 등등 단 하나의 파일을 서비스하는 서버 교재 244쪽 방향 재지정기 교재 248쪽 완전한 HTTP 서버 교재 254쪽 PL Lab

하나의 파일만을 제공하는 서버(1) [cse] server>java onefile index.html 2000 Accepting connections on port2000 Data to be sent: null<HTML> <HEAD> <TITLE>자바 웹서버</TITLE> </HEAD> <BODY> <B>자바</b>로 구현한 <font color=blue>하나의 파일</font>만을 담당하는<BR> HTTP 서버 </BODY> </HTML> PL Lab

하나의 파일만을 제공하는 서버(2) PL Lab

방향재지정기 [cse] server>java Redirector ce.hannam.ac.kr 2000 Redirecting connections on port 2000 to ce.hannam.ac.kr PL Lab

완전한 HTTP 서버 - jhttp [ce] server>java jhttp ~sfline/public_html 2000 Accepting connections on port 2000 Document Root: /lab/sfline/public_html PL Lab