6-1.(3) 네트워킹_UDP

zhyun·2020년 10월 15일
0

HighJava

목록 보기
51/67

UDP 통신

  • User Datagram Protocol
  • 비연결지향적이다
  • 데이터의 신뢰성을 보장하지 않는다
  • TCP에 비해 전송 속도가 빠르다

UDP 통신 관련 클래스

DatagramPacket 클래스

  • UDP 데이터그램을 추상화 한 클래스
  • 애플리케이션에서 주고받을 데이터와 관련된 클래스
  • 데이터를 송신(send)기능과 수신(receive)기능으로 크게 분리
  • 출발지 주소,포트와 목적지 주소,포트를 설정하거나 주소를 얻어오는 메소드 제공

DatagramPacket 클래스의 주요 생성자

생성자설명
DatagramPacket(byte[] buf, int length)데이터를 수신하기 위한 생성자로서 바이트 배열 buf의 length만큼 저장한다
DatagramPacket(byte[] buf, int length, InetAddress address, int port)데이터를 송신하기 위한 생성자로 address와 port로 바이트 배열 buf의 length만큼 저장한다
DatagramPacket(byte[] buf, int offset, int length)데이터를 수신하기 위한 생성자로 바이트 배열 buf의 offset위치에서 length만큼 저장한다
DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port)데이터를 송신하기 위한 생성자로 address와 port로 바이트 배열 buf의 offset위치에서 length길이만큼 저장한다

DatagramPacket 클래스의 주요 메서드

반환형메서드설명
InetAddressgetAdress()데이터그램에 대한 목적지 또는 출발지 주소를 반환
byte[]getData()버퍼에 들어있는 실제 데이터를 바이트 배열로 반환
intgetLength()버퍼에 들어있는 실제 데이터의 길이를 반환
intgetOffset()버퍼에 들어있는 실제 데이터의 시작위치를 반환
intgetPort()데이터그램에 대한 목적지 또는 출발지 포트를 반환
voidsetAddress(InetAddress iaddr)데이터를 보낸 호스트 주소를 설정
voidsetData(byte[] buf)버퍼에 들어있는 실제 데이터를 바이트 배열 buffer로 설정
voidsetData(byte[] buf, int offset, int length)버퍼에 들어있는 실제 데이터를 바이트 배열 buffer의 offset위치에서 length만큼 설정
voidsetLength(int length)버퍼에 들어있는 실제 데이터의 길이를 설정한다.
voidsetPort(int Port)데이터그램에 대한 목적지 또는 출발지 포트를 설정한다.

DatagramSocket 클래스

  • TCP 스트림 소켓과 달리 서버와 클라이언트 데이터 그램 소켓 사이에는 차이가 없으며
    모든 데이터그램 소켓은 데이터그램을 전송할 뿐만 아니라 수신에서 사용할 수 있다.
  • 모든 DatagramSocket 객체는 데이터그램을 수신하기 위해서 사용될 수 있기 때문에 로컬 호스트 내의 유일한 UDP 포트와 연관되어 있다.

DatagramSocket 클래스의 주요 생성자

생성자설명
DatagramSocket()할당된 특정한 포트번호가 중요하지 않다면 사용 가능한 임시 UDP 포트로 소켓을 생성하여 DatagramSocket 객체를 생성
DatagramSocket(int port)매개변수 포트로 소켓을 생성하여 DatagramSocket 객체를 생성한다.
DatagramSocket(int port, InetAddress iadder)매개변수 port와 iaddr로 소켓을 생성하여 DatagramSocket 객체를 생성한다.

DatagramSocket 클래스의 주요 메서드

  • DatagramSocket 클래스의 주요 메서드 기능은 DatagramPacket을 보내거나 받을 수 있는 메서드를 제공하는 것이다
반환형메서드설명
voidsend(DatagramPacket dp)UDP 데이터그램(dp)을 전송하는 메서드
voidreceive(DatagramPacket dp)UDP 데이터그램을 받아서 이미 존재하는 DatagramPacket객체인 dp에 저장한다
voidclose()데이터그램 소켓이 점유하고 있는 포트를 자유롭게 놓아준다
intgetLocalPort()현재 소켓이 데이터그램을 기다리고 있는 로컬 포트가 몇번인지를 리턴
voidconnect(InetAddress address, int port)DatagramSockt이 지정된 호스트의 지정된 포트하고만 패킷을 주고받을 것이라고 정한다.
voiddisconnect()현재 연결된 DatagramSocket의 연결을 끊는다. 연결이 끊기면 아무것도 하지 못하게 된다.
intgetPort()DatagramSocket이 연결되어 있다면 소켓이 연결되어 있는 원격지 포트번호를 반환한다.
InetAddressgetInetAddress()DatagramSocket이 연결되어 있다면 소켓이 연결되어 있는 원격지 주소를 반환한다.
profile
HI :)

0개의 댓글