UDP 기반 통신 (JAVA 네트워크)
1. InetAddress 클래스
■ InetAddress 클래스
✓ 인터넷 주소와 관련된 기능을 제공하는 클래스
✓ IP 주소를 액세스 하기 위한 추상층을 제공
✓ IPv6용 프로그램으로 포팅 할 때 투명성 유지 가능
□ InetAdress 클래스의 메서드
메서드 이름 | 설명 |
boolean equals(InetAddress other) | 현 객체가 other 객체와 같은 주소를 가지면 true, 아니면 false |
byte[] getAddress() | 주소를 나타내는 4개의 요소를 가진 바이트 배열을 반환 |
String getHostAddress() | 주소 정보를 나타내는 문자열 반환 |
String getHostName() | 컴퓨터 이름을 나타내는 문자열을 반환 |
InetAddress getLocalHost() throws UnknownHostException | 현재 컴퓨터를 나타내는 InetAddress 객체를 반환 |
InetAddress getByName(String hostName) throws UnknownHostException | hostName으로 지정된 컴퓨털르 나타내는 InetAddress 객체를 반환 |
InetAddress[] getAllByName(String hostName throws UnknownHostException) | hostName으로 지정된 모든 컴퓨터 (하나의 도메인 이름으로 여러 대의 컴퓨터를 사용하는 경우)를 나타내는 InetAddress 객체들의 배열을 반환 |
2. UDP
■ UDP(User Datagram Protocol)
✓ 비연결성 통신 방식
✓ 높은 신뢰성이 요구되지 않는 분야에 이용
✓ TCP에 비해 네트웍 부담을 주지 않음
✓ 자바는 UDP를 지원하기위해
. DatagramPacket
. DatagramSocket 클래스 제공
3. DatagramPacket 클래스
■ DatagramPacket 클래스
✓ DatagramPacket 클래스
- 정보를 주고받기 위한 준비과정의 기능을 제공하는 클래스
✓ 생성자
- DatagramPacket(byte[] buffer, int size)
: 데이터를 수신하는 응용 프로그램에서 사용하는 생성자
. buffer: 수신되는 데이터를 저장할 바이트 배열
. size: 배열의 크기
- DatagramPacket(byte[] buffer, int size, InetAddress ia, int port)
: 데이터를 송신하는 응용프로그램에서 사용하는 생성자
. buffer : 송신될 데이터가 저장되어 있는 배열
. size : 배열의 크기
. ia : 정보가 보내질 컴퓨터의 주소이며 InetAddress 객체를 사용하여 지정
. port : 컴퓨터의 포트 번호
□ DatagramPacket 클래스의 메서드
메서드 | 기능 |
InetAddress getAddress() | 데이터그램의 주소 반환 |
void setAddress(InetAddress iaddr) | 데이터그램에 목적지 주소 설정 |
bytep[ getData() | 데이터그램의 데이터 반환 |
void setData(byte[] buf) | 데이터그램의 데이터 설정 |
void setData(byte[] buf, int offset, int length) | byte 배열의 offset부터 length 만큼을 데이터그램에 데이터로 설정 |
int getLength() | 데이터의 길이나 수신할 데이터의 최대 크기 반환 |
void setLength(int length) | 수신할 데이터의 최대 길이 설정 |
int getPort() | 데이터그램의 포트 반환 |
void setPort(int iport) | 데이터그램의 포트 설정 |
4. DatagramSocket 클래스
■ DatagramPacket 클래스
✓ DatagramSocket을 사용해 통신할 때의 순서
- DatagramScoket 클래스의 인스턴스를 구성
. 이때 클라이언트는 로컬 주소와 포트를 선택적으로 지정
. 서버의 경우 포트를 지정
- DatagramSocket 클래스의 send() receive() 메서드 사용,
DatagramPacket 클래스의 인스턴스를 주고받음으로써 통신
- 통신이 끝나면 DatagramSocket 클래스의 close() 메서드 호출로 소켓 차단
□ DatagramSocket 생성자
메서드 | 기능 |
DatagramSocket() | 포트와 로컬 주소를 지정하지 않는 생성자 |
DatagramSocket(int port) | 특정 포트의 데이터그램만을 수신하도록 포트번호를 지정하는 생성자 |
DatagramSocket(int port, InetAddress laddr) | 특정 로컬 주소와 포트의 데이터그램만을 수신하도록 로컬 주소와 포트번호를 지정하는 생성자 |
DatagramSocket(SocketAdrress bindaddr) | 로컬 주소와 포트번호가 바인딩 되어있는 주소 클래스인 SocketAddress를 인자로 사용하는 생성자 |
□ DatagramSocket 클래스의 메서드
메서드 | 기능 |
void connect(InetAddress address, int port) | 특정 원격 주소와 포트를 지정, 주소가 지정이 되면 다른 주소나 포트로부터 수신한 데이터그램은 무시 |
void disconnect() | 소켓에 지정된 주소와 포트 제거 |
InetAddress getInetAddress() | 원격 소켓의 주소와 포트 반환 |
InetAddress getLocalAddress() | 소켓의 주소와 포트 반환 |
int getLocalPort() | 소켓의 포트 반환 |
int getSoTimeout() | receive() 메서드가 수신을 위해 대기하는 시간 반환 |
void setSoTimeout(int timeout) | receive() 메서드가 수신을 위해 대기하는 시간 설정 |
void receive(DatagramPacket p) | 현재의 소켓으로부터 정보를 읽어 dgram 패킷에 저장 |
void send(DatagramPacket p) | 현재의 소켓을 통하여 dgram 패킷을 전송 |
'Language > JAVA' 카테고리의 다른 글
[JAVA] 메모장(notepad) 만들기 - ActionListener 객체의 속성과 동작 구현 ③ | Yoon's Dev (0) | 2021.05.29 |
---|---|
[JAVA] 메모장(notepad) 만들기 - 열기, 저장, 새 파일, 종료 메서드 구현 ② | Yoon's Dev (0) | 2021.05.26 |
[JAVA] 메모장(notepad) 만들기 ① - 인터페이스 구현 | Yoon's Dev (0) | 2021.05.25 |
[JAVA] 스트림(Stream) 연산 옵션 타입 | Yoon's Dev (0) | 2021.05.20 |
[JAVA] 스트림(Stream) 연산 느긋한 연산, 조급한 연산, 병렬 처리 | Yoon's Dev (0) | 2021.05.18 |