Computer Network Lab. 1 9. UDP 데이터그램 과 소켓 2000. 6. 2 강 동 호 컴퓨터 네트워크 실험실.

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

Computer Network Lab 다중전송 소켓 컴퓨터 네트워크 실험실 이 희 규, 조 한 진.
Chap15 네트워킹 Section 1 : 네트워킹의 개요와 java.net 패키지 Section 2 : 인터넷 주소와 URL Section 3 : TCP 소켓 Section 4 : UDP 소켓.
Chap15 네트워킹 Section 1 : 네트워킹의 개요와 java.net 패키지 Section 2 : 인터넷 주소와 URL
1 안드로이드 네트워킹 안드로이드 앱 프로그래밍 여 규리.
네트워킹 프로그래밍과 java.net 패키지
네트워크 프로그래밍 및 실습.
[ 단원 11 ] 입출력과 네트워크.
CHAP 22. 블루투스.
Network Lab. Byoung-Son, Choi
김태원 심재일 김상래 강신택. 김태원 심재일 김상래 강신택 인터넷 통신망의 정보를 제공하는 서비스 인터넷의 자원 및 정보는 NIC가 관리 IP주소 또는 도메인으로 정보 검색 이용자 및 통신망 관한 정보를 제공.
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 11장 프로세스간 통신 인공지능실험실 석사 2학기 이희재
최윤정 Java 프로그래밍 클래스 상속 최윤정
Ch.07-5 xml-rpc 사용하기 김상엽.
Network Lab. Young-Chul Hwang
Department of Computer Science and Engineering
Java로 배우는 디자인패턴 입문 Chapter 5. Singleton 단 하나의 인스턴스
10장 예외 Lab 10-1.
소켓 모델 주소 지정 in_addr_t inet_addr(const char *ip_address) 연결 지향 모델 (TCP)
Chap11 네트워킹 11.1 네트워킹의 개요와 java.net 패키지 11.2 인터넷 주소와 URL 11.3 TCP 소켓
24 장 TCP/IP 24.1 개요 24.2 네트워크층 24.3 주소 지정 24.4 서브넷팅틍
INDEX 1. 전체 시스템 구성도 2. 개발환경 3. 사용자 명령어 4. 패킷 구조 및 데이터 구조
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
JAVA 프로그래밍 12장 네트워킹(Networking).
31강 JAVA 네트워크 JAVA 네트워크 InetAdress, URLConnection 클래스 Socket의 이해
네트워킹 CHAPTER 13 Section 1 네트워킹의 개요와 java.net 패키지 Section 2 인터넷 주소와 URL
명품 JAVA Programming 제 16 장 네트워크.
Chap08 다중 스레드 8.1 스레드 개요 8.2 Thread 클래스와 스레드 생명주기 8.3 스레드 생성과 사용
네트워크 프로그래밍 Yang-Sae Moon Department of Computer Science
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
Chapter 06. UDP 서버/클라이언트.
인공지능실험실 박사 1학기 장성만 TCP/IP Socket Programming… 9장 소켓의 다양한 옵션 인공지능실험실 박사 1학기 장성만
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
Socket Address Structure and Byte Ordering Functions
10장. 예외처리.
8장 서버 소켓 프로그래밍 언어 실험실 석사 3학기 김성중.
15장 네트워킹 15.1 네트워킹의 개요와 java.net 패키지 15.2 인터넷 주소와 URL 15.3 TCP 소켓
Chapter 5 UDP Socket 소켓 프로그래밍.
WOL(Wake-On Lan) 컴퓨터공학과 4학년 박기웅.
I/O&socket통신 POWERPOINT & GROUP STUDY 한재희 김상훈 최기람 황인준 이어진.
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
22 장 전송층(Transport Layer)
RMI Messenger 지도 : 김정배 교수님 조봉진.
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
21 장 전송층(Transport Layer)
자바 암호 프로그래밍 Java Cryptography Programming
9 TCP의 이해 학습 목표 전송 계층 프로토콜이 제공하는 기능을 이해한다.
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
Network 네트워크 이론 및 실습 TCP / IP 4장.
자바 5.0 프로그래밍.
10 기타 전송 계층 프로토콜.
8장 네트워크.
14강. 세션 세션이란? 세션 문법 Lecturer Kim Myoung-Ho Nickname 블스
CHAP 21. 전화, SMS, 주소록.
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
Ping Test.
12강. 컨트롤러 컨트롤러 클래스 제작 요청 처리 메소드 제작 뷰에 데이터 전달
Chapter 27 Mobile IP.
세션에 대해 알아보고 HttpSession 에 대해 이해한다 세션 관리에 사용되는 요소들을 살펴본다
5.2.3 교환방식의 비교 학습내용 교환방식의 비교.
MIDP 네트워크 프로그래밍 ps lab 김윤경.
발표자 : 이지연 Programming Systems Lab.
다자간 채팅프로그램 김형도 허영민
인공지능실험실 박사 1학기 장성만 TCP/IP Socket Programming… 제 8장 도메인 이름과 인터네 주소 인공지능실험실 박사 1학기 장성만
4. IP 데이터그램과 라우팅 (6장. 인터넷과 IP) IP 데이터그램 : 특정 물리망에 종속되지 않은 가상의 패킷 형식.
Network Lab. Young-Chul Hwang
통신프로토콜 전산정보학부 모바일인터넷과 권 춘 우
ARP.
20 XMLHttpRequest.
Presentation transcript:

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

Computer Network Lab. 2 목차  개요  DatagramPacket 클래스  DatagramSocket 클래스  데이터그램 수신과 송신  소켓 옵션  추상화의 상위수준  유용한 프로그램  요약

Computer Network Lab. 3 개 요개 요  UDP(User Datagram Protocol) 데이터그램  비연결형 데이터 전달 서비스를 제공하는 전달 계층 프로토콜  신뢰성이나 데이터의 전달 순서를 보장하지 않는다.  신뢰성보다 속도가 중요시 되는 데이터의 전송에 이 용  TCP - 전화, UDP - 편지

Computer Network Lab. 4 개 요 (Cont’d)  UDP  Connection-Less mode  Unreliable service  TCP  Connection-Oriented mode  Reliable service

Computer Network Lab. 5 개 요 (Cont’d)  UDP 데이터그램 형식 32 비트 데이터 길이체크섬 근원지 포트목적지 포트

Computer Network Lab. 6 개 요 (Cont’d)  자바의 UDP 구현에 필요한 클래스  DatagramPacket  데이터를 데이터그램이라는 UDP 패킷에 채워 넣고, 도착한 데이터그램에서 데이터를 꺼낼수 있도록 한다.  DatagramSocket  데이터를 보내고, 받는 역할을 한다.

Computer Network Lab. 7 DatagramPacket 클래스  public DatagramPacket(byte buffer[ ], int length) p 데이터를 받기 위해 DatagramPacket 객체를 만드는 생성자 pbuffer[ ]: 데이터가 위치해 있는 바이트 배열 plength: 버퍼의 길이 (buffer.length 보다 긴 DatagramPacket 을 생성 하려고 하면, lIIegalArgumentException 에러 발생 )

Computer Network Lab. 8 DatagramPacket 클래스 (Cont’d)  데이터를 수신하는 DatagramPacket 생성하기 import java.net.*; public class UDPReceiver { public static void main (String args[ ]) { byte[] buffer = new byte[8096]; DatagramPacket dp = new DatagramPacket(buffer, buffer.length); }

Computer Network Lab. 9 DatagramPacket 클래스 (Cont’d)  public DatagramPacket(byte buffer[ ], int length, InetAddress ia, int port) p 다른 호스트로 전송할 DatagramPacket 생성 p buffer[ ]: 전송할 데이터의 바이트 배열 p length: 버퍼의 길이 (buffer.length 보다 큰 length 를 갖는 DatagramPacket 을 생성하려고 하면, IllgalArgumentException 이 발생한다.) p InetAddress ia: 패킷의 목적지 호스트 주소 p Port: 목적지 포트 번호

Computer Network Lab. 10 DatagramPacket 클래스 (Cont’d)  데이터를 보내기 위해 DatagramPacket 을 생성하기 import java.net.*; Public class UDPSender { Public static void main(String args[]) { String s = “this is a test.”; byte[] data = new byte[s.length()]; S.getBytes(0, s.length(),data, 0); try { lnetAddress ia = lnetAddress.getByName(“sunsite.unc.edu”); Int port = 7; DatagramPacket = new DatagramPacket(data, data.length, ia, port); } Catch (UnknownHostException e) { }

Computer Network Lab. 11 get 메소드들  데이터그램의 정보 제공  public InetAddress getAddress( )  원격호스트의 주소를 가진 InetAddress 객체를 반환  임의의 네트워크로부터 수신된 것이라면, 데이터그램 을 보낸 호스트의 주소를 반환  데이터그램을 전송하기 위해 로컬 호스트에서 생성된 것이라면, 데이터그램이 보내질 호스트의 주소를 반 환

Computer Network Lab. 12 get 메소드들 (Cont’d)  public int getPort( )  원격기계의 데이터그램 포트 번호를 정수로 반환  public byte[] getData( )  데이터그램 안에 들어있는 데이터들을 바이트 배열로 반환  다른 데이터형 (String 형 ) 으로의 변환  Public String(byte[] buffer, int high_byte, int start, int num_bytes) String s = new String(dp.getData(), 0, 0,dp.getLength()); // 데이터그램에 들어있는 데이터가 아스키 텍스트일 경우

Computer Network Lab. 13 get 메소드들 (Cont’d)  Public ByteArrayInputStream(byte[] buffer, int offset, int num_byte) ByteArrayInputStream bis = new ByteArrayInputStream(dp.getData( ), 0, 0, dp.getLength( )); DataInputStream dis = new DataInputStream(bis); // 아스키 텍스트가 아닌 경우  Public int getLength( )  데이터의 바이트 수 반환

Computer Network Lab. 14 get 메소드들 (Cont’d)  데이터 전송을 위한 DatagramPacket 을 생성하기 String s = "This is a test."; byte[] data = new byte[s.length()]; s.getBytes(0, s.length(), data, 0); try { InetAddress ia = InetAddress.getByName(“netwk.hannam.ac.kr"); int port = 7; DatagramPacket dp = new DatagramPacket(data, data.length, ia, port); System.out.println("This packet is addressed to " + dp.getAddress() + “ on port " + dp.getPort()); System.out.println("There are " + dp.getLength() + " bytes of data in the packet"); System.out.println(new String(dp.getData(), 0, 0, dp.getLength())); }

Computer Network Lab. 15 DatagramSocket 클래스  UDP 에서 데이터그램을 보내거나 받을때 사용 되는 유일한 소켓 클래스  Public DatagramSocket( ) throws SocketException  익명 포트에 바인드 되는 DatagramSocket 을 생성 public static void main(String[] args) { try { DatagramSocket theClient = new DatagramSocket(); } }

Computer Network Lab. 16 DatagramSocket 클래스 (Cont’d)  Public DatagramSocket(int port) throws SocketException  지정된 특정 포트에서, 들어오는 데이터그램을 기다 리는 DatagramSocket 생성  객체 생성 실패 원인  지정된 포트가 이미 사용중일 때  1024 번 이하의 포트를 사용하려고 할때  소켓 생성 실패시 SocketException 발생

Computer Network Lab. 17 DatagramSocket 클래스 (Cont’d) Import java.net.*; public class lookForLocalUDPPorts { public static void main(String[ ] args) { DatagramSocket theServer; for (int i = 1024; i <= 65535; i++) { try { theServer = new DatagramSocket(i); theServer.close(); } catch (SocketException e) { System.out.println("There is a server on port " + i + "."); } } }}

Computer Network Lab. 18 DatagramSocket 클래스 (Cont’d)  Public DatagramSocket(int port, lnetAddress intf) throws SocketException  지정된 포트와 지정된 네트워크 인터페이스에서 들어오는 데이 터그램을 위해 연결요청을 기다리는 소켓을 생성  Port: 소켓이 데이터그램을 위해 연결 요청을 기다리는 포트  Intf: 호스트의 네트워크 주소중의 하나에 대한 lnetAddress 객체 이다.  자바 1.1 에서만 지원

Computer Network Lab. 19 데이터그램 주고 받기  public void send(DatagramPacket dp) throws IOExecption  DatagramPacket 이 생성되고, DatagramSocket 이 열 리면 소켓의 send() 메소드에 패킷을 넘김으로써 데 이터를 전송할 수 있다.  theSocket.send(theOutput);

Computer Network Lab. 20 데이터그램 주고 받기 (Cont’d)  Public void receive(DatagramPacket dp) throws IOException  네트워크를 통해 수신된 UDP 데이터그램을 DatagramPacket 객체로 변환한다.

Computer Network Lab. 21 데이터그램 주고 받기 (Cont’d)  Public int getLocalPort()  로컬기계에서 소켓이 귀를 기울이고 있는 포트의 번 호를 int 로 반환  익명 포트를 사용해서 DatagramSocket 을 생성한 경 우, 사용중인 포트 번호를 알고자 할 때 이 메쏘드를 사용 하면 된다.

Computer Network Lab. 22 데이터그램 주고 받기 (Cont’d) import java.net.*; public class getLocalPortExample { public static void main(String[] args) { try { DatagramSocket ds = new DatagramSocket(); System.out.println("The DatagramSocket is on port " + ds.getLocalPort()); } catch (SocketException e) { }

Computer Network Lab. 23 데이터그램 주고 받기 (Cont’d)  Public synchronized void close( )  소켓이 사용하고 있는 포트의 해제 try { DatagramSocket theServer = new DatagramSocket(); theServer.close(); }

Computer Network Lab. 24 소켓 옵션 ( 자바 1.1)  자바 1.1 에서 데이터그램 소켓에 대해 지원이 되는 소켓 옵션은 SO_TIMEOUT 뿐이다.  Public synchronized void setSoTimeout(int timeout) throws SocketException  데이터그램 소켓의 SO_TIMEOUT 필드에 값을 설정한다.  receive() 메쏟가 연결 요청 신화를 기다려야하는 시간을 milliseconds 단위로 설정한다.  설정된 시간이 지나면, InterruptedException 이 발생한다.  정해진 시간내에 응답이 와야 하는 보안관련 프로토콜 작성시에 사용된다.

Computer Network Lab. 25 소켓 옵션 ( 자바 1.1) (Cont’d) try { buffer = new byte[2056]; DatagramPacket dp = new DatagramPacket(buffer, buffer.length); DatagramSocket ds = new ServerSocket(2048); ds.setSoTimeout(30000); try { ds.receive(dp);..... } catch (InterruptedExecption e) { ds.close (); System.err.println(" No connection within 30 seconds"); }

Computer Network Lab. 26 소켓 옵션 ( 자바 1.1) (Cont’d)  Public synchronized int getSoTimeout() throws IOException  getSoTimeout() 메소드는 현재 DatagramSocket 객체 의 SO_TIMEOUT 필드 값을 반환한다. int timeout = ds.getSoTimeout( );

Computer Network Lab. 27 객체 메소드들  Protected synchronized void finalize()  DatagramPacket 또는 DatagramSocket 에 의해서 치 환되는 java.lang.Object 의 유일한 메소드  DatagramSocket 객체가 쓰레기 수거되기 전에 호출 된다.

Computer Network Lab. 28 추상화의 상위수준  UDPClient  데이터를 보내기 전에 바이트 배열을 DatagramPacket 객 체로 변환할 필요가 없고, 데이터그램을 수신하기 위해 빈 버퍼를 가진 DatagramPacket 을 생성할 필요도 없다.  인터넷 주소와 포트 번호를 인자로 넘김으로써 UDPClient 객체를 생성한다.

Computer Network Lab. 29 유용한 프로그램  호스트는 패킷의 IP 헤더 부분을 조사해서 TCP 패 킷 인지 UDP 패킷 인지를 판별할수 있다.  TCP 서버와 UDP 서버는 아무런 문제없이 같은 포트 번호를 공유할 수 있다.

Computer Network Lab. 30 유용한 프로그램 (Cont’d)  간단한 UDP 클라이언트  몇몇 인터넷 서비스는 클라이언트의 주소와 포트번호 만을 필요로 한다.  서버측에서는 데이터 그램내에 있는 데이터를 그냥 버린다.  daytime(13 포트 ),quote(17 포트 ),chargen(19 포트 )

Computer Network Lab. 31 유용한 프로그램 (Cont’d)  UDP 서버  하나의 UDP 서버 클래스를 만들어, 특수한 프로토콜 을 구현하는 서버는 서버 클래스로 만드는 개념

Computer Network Lab. 32 유용한 프로그램 (Cont’d)  UDP echo 클라이언트  echo 프로토콜을 UDP 로 구현하기 어려운점  I/O 스트림을 지원하지 않는다.  연결이라는 개념이 존재하지 않는다.  UDP 에서는 데이터를 보내고 받는 프로세스가 비동 기적으로 이루어져야 한다. => Thread 를 이용  UDPEchoClient, echoInputThread, echoOutputThread 클래스로 구성된다.

Computer Network Lab. 33 유용한 프로그램 (Cont’d)  UDPEchoClient 클래스  명령어 입력 라인에서 호스트이름을 읽어 들이고, 소 켓 생성 후 echoInputThread 클래스, echoOutputThread 클래스를 실행시킨다.  echoInputThread 클래스  사용자로 부터 입력을 한번에 한줄씩 읽어 들여, 이를 echo 서버에게 전송한다.

Computer Network Lab. 34 유용한 프로그램 (Cont’d)  echoOutputThread 클래스  데이터그램이 도착할 때 까지 대기하다가 수신되면, 그것을 String 으로 변환하여 출력한다.

Computer Network Lab. 35 요 약요 약  DatagramPacket 클래스  데이터를 데이터그램이라는 UDP 패킷에 채워 넣고, 도착한 데이터그램에서 데이터를 꺼낼 수 있도록 하 기 위한 DatagramPacket 객체를 생성한다.  DatagramSocket 클래스  데이터그램을 송수신하기 위한 DatagramSocket 객 체를 생성한다.