네트워크(Network)
1. 네트워크
- 연결된 객체 간의 상호작용
- 인터넷 안에서 이뤄지는 작용
2. 주요 개념들
- IP 주소 : 인터넷상에서 장치간 통신을 위해 각 장치에 지정하는 식별용 주소
- 로컬 호스트 : 내 컴퓨터가 내 컴퓨터에 접속할 수 있는 주소 (127.0.0.1)
- 포트(port) : 컴퓨터 내에서 실행되고 있는 네트워크 프로세스를 구분하기 위한 값
※ 대표적인 포트들 :
- 53 : 도메인 이름
- 20 : 파일 전송 포트
- 80 : HTTP 포트 (웹 전용)
- 소켓 : 데이터 전송 시, 데이터를 묶는 단위
3. 네트워크 방식
- 네트워크에는 정보를 주고받는 '방식(Protocol)'이 나뉘어 있음
- TCP : 패킷 단위로 데이터를 전송, 실패 시 재전송을 하는 신뢰도가 높은 방식
- UDP : 패킷 단위로 데이터를 전송, 실패 시 재전송 하지 않는 신뢰도가 낮은 방식
// Example1
package sample;
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
//#1. InetAddress 객체 생성
//@1-1. 원격지IP 객체 생성
InetAddress ia1 = InetAddress.getByName("www.google.com");
InetAddress ia2 = InetAddress.getByAddress(new byte[] {(byte)172,(byte)217,(byte)161,36});
InetAddress ia3 = InetAddress.getByAddress("www.google.com", new byte[] {(byte)172,(byte)217,(byte)161,36});
System.out.println(ia1); // www.google.com/142.250.206.196
System.out.println(ia2); // /172.217.161.36
System.out.println(ia3); // www.google.com/172.217.161.36
System.out.println();
//@1-2. 로컬/로프백IP
InetAddress ia4 = InetAddress.getLocalHost();
InetAddress ia5 = InetAddress.getLoopbackAddress();
System.out.println(ia4); // 자신의 IP 주소
System.out.println(ia5); // 자신의 로컬 호스트
System.out.println();
//@1-3. 하나의 호스트가 여러 개의 IP를 가지고 있는 경우
InetAddress[] ia6 = InetAddress.getAllByName("www.naver.com");
System.out.println(Arrays.toString(ia6)); // [www.naver.com/223.130.200.107, www.naver.com/223.130.195.200]
System.out.println();
//#2. InetAddress 메소드
byte[] address = ia1.getAddress();
System.out.println(Arrays.toString(address));
System.out.println(ia1.getHostAddress());
System.out.println(ia1.getHostName());
System.out.println();
// 1000ms의 시간 제한을 두고,
System.out.println(ia1.isReachable(1000)); //true
System.out.println(ia1.isLoopbackAddress()); //false
System.out.println(ia1.isMulticastAddress()); //false 224-239.0-255.0-255.0-255
System.out.println(InetAddress.getByAddress(new byte[] {127,0,0,1}).isLoopbackAddress()); //true
System.out.println(InetAddress.getByAddress(new byte[] {(byte)234,(byte)234,(byte)234,(byte)234}).isMulticastAddress()); //true
}
}
// Example2
package sample;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.UnknownHostException;
public class Main {
public static void main(String[] args) throws UnknownHostException {
//#1. SocketAddress 객체 생성 (InetSocketAddress 생성자 사용)
InetAddress ia = InetAddress.getByName("www.google.com");
int port = 10000;
InetSocketAddress isa1 = new InetSocketAddress(port); // 10000번 포트
InetSocketAddress isa2 = new InetSocketAddress("www.google.com", port); // 구글의 10000번 포트
InetSocketAddress isa3 = new InetSocketAddress(ia, port);
System.out.println(isa1); // 0.0.0.0/0.0.0.0:10000 (주소가 없는 상태)
System.out.println(isa2); // www.google.com/172.217.25.164:10000
System.out.println(isa3); // www.google.com/172.217.25.164:10000
System.out.println();
//#2. SocketAddress의 메소드
System.out.println(isa2.getAddress()); // www.google.com/172.217.25.164
System.out.println(isa2.getHostName()); // www.google.com
System.out.println(isa2.getPort()); // 10000
}
}
'Programming Language > Java' 카테고리의 다른 글
오류가 발생한 엑셀 csv 파일의 열 찾기 (0) | 2024.07.30 |
---|---|
BuffredReader - 엑셀 불러오기 (3) | 2024.07.23 |
IO (Input / Output) (입출력) 스트림 (0) | 2022.07.21 |
람다식 - 2. 자바 API의 함수형 인터페이스 (0) | 2022.07.21 |
람다식 - 1. 람다식(Lambda Expression) (0) | 2022.07.21 |