< 네트워크 통신 클래스 >
네트워크 - 여러대의 통신기기들을 연결한 구조
홈네트워크 -> 지역네트워크 -> 인터넷
<서버 / 클라이언트> - 네트워크로 연결되어있어야 한다.
클라이언트 - 고객. 요청자
서버 - 고객의 요청을 받아 응답
protocol - 서버와 클라이언트 간의 통신 규칙 - 약속 언어
< IP주소 / Port번호 >
IP - 네트워크상 컴퓨터 식별 번호
- ip4 방식 (0~255)
256.256.256.256 ( 256^4 부족해 )
=> ip6 방식으로 개선중
- cmd => "ipconfig" => ip4/ip6 주소 확인가능
- 하나의 IP 서버 에서 여러개 서비스를 구현할 수 있다.
IP : 162.84.24.144 => 1.웹서버 / 2.DB서버
이 IP 로 접근하면 어떤 서비스 요청인지 구분 필요
=> Port 번호 사용
IP : 162.84.24.144
1.웹서버 (8080) <= IP : 162.84.24.144 : 8080
2. DB서버 (3306) <= IP : 162.84.24.144 : 3306
=> Port번호를 사용해서 서버의 서비스를 구분해서 이용할 수 있다.
- Port번호 - 2^16 (0~65535번)
시스템적 자체사용 port번호 - 1024 + 10000 까지는 이미 정해진 것
웹 : 8080 번호
db (MySQL) : 3306 번호
=> 피해서 10000번 이후 번호 사용하자
=> ip주소 + Port번호 ==보기쉽도록==> Domain Name( 문자이름 부여 )
https:// 프로토콜
www.google.com 도메인
https://www.google.com/ URL
< Port 충돌 예외 >
- BindException : Address already in use: NET_Bind
TCP 서버가 이미 10000번 Port를 사용중인데, (통화중)
또 중복으로 10000번 Port 사용하려 하면 Exception
ServerSocekt ss = new ServerSocekt( 10000 ) ;
ServerSocekt new_ss = new ServerSocekt( 10000 ); (X)
서버 클라이언트
TCP ServerSocket Socket
UDP DatagramSocket DatagramSocket
DatagramPacket DatagramPacket
통신X InetAdress -> IP주소 정보
< InetAddress 클래스 > => ip 주소 정보를 가진 클래스 ( java.net )
- new 로 생성할 필요없이 바로 객체 생성해서 사용한다.
- UnknownHostException 예외 잡아서 사용한다.
- 메소드
.getLocalHost( ) => 현재 내 컴퓨터 IP정보
InetAddress ip = InetAdress.getLocalHost( );
.getHostAddress( ) => 실제 IP주소를 가져오는 것
(이거 안쓰면 객체정보만 가져와줌. toString 같은 역할 )
s.getInetAddress().getHostAddress( );
.getAllByName( "도메인" ); => 도메인 이름으로 IP 주소 가져오기
InetAddress[ ] info_list = InetAddress.getAllByname("www.google.com");
for( InetAddress inet : ip2 ) { sout (inet.getHostAddress;) }
'Back to the Java' 카테고리의 다른 글
객체지향 활용하기 (0) | 2023.01.10 |
---|---|
TCP / UDP 프로토콜 방식 / Socket / Packet / (0) | 2022.07.11 |
File 클래스 => 파일/디렉토리 정보제공 (0) | 2022.07.08 |
파일 입출력 클래스 / FileInput/OutputStream / FileReader/FileWriter (0) | 2022.07.08 |
IO 입출력 클래스 / In/outputStream / reader/writer / + Scanner (0) | 2022.07.08 |