GitHub

https://github.com/Backcoder-June

BackCoder 기록 그리고 숙달

Back to the Java

Net 클래스 / 네트워크/ IP/Port / InetAddress 클래스 /

Backcoder 2022. 7. 11. 20:47

< 네트워크 통신 클래스 > 

네트워크 - 여러대의 통신기기들을 연결한 구조
홈네트워크 -> 지역네트워크 -> 인터넷

<서버 / 클라이언트>  네트워크로 연결되어있어야 한다. 

클라이언트 - 고객. 요청자 
서버             - 고객의 요청을 받아 응답 

 

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;) }