*네트워크: 여러 대의 컴퓨터들이 연결되어 있는 통신망
=> 네트워크를 통해 서로 데이터 교환 가능
IP포트: 컴퓨터의 주민번호, 같은 네트워크 내에서 중복 불가
port번호: 컴퓨터 안에서 작동하는 프로그램의 번호, 같은 컴퓨터 내에서 중복 불가
서버: 클라이언트에게 서비스를 제공하는 pc 또는 프로그램
=> 클라이언트의 요청을 처리해서 응답하는 역할이므로 요청이 들어오기 전까지 항상 대기 상태 유지
클라이언트: 서버에 요청하는 pc 또는 프로그램
=> 서버에 요청하기 위해 서버의 IP주소, port번호를 알고 있어야 함
<클래스와 메소드 정리>
InetAddress 클래스: 네트워크 정보(IP주소 관련)를 확인할 수 있는 클래스
localhost: 지역호스트를 뜻하며, 내 PC를 지칭
.getLocalHost() 메소드: 내 PC에 대한 정보를 반환해 주는 메소드
=> InetAddress 형태로 반환
.getHostName() 메소드: 내 PC명 반환
.getHostAddress() 메소드: 내 IP주소 반환
InetAddress localhost = InetAddress.getLocalHost();
System.out.println(localhost);
// 내 pc명 + "/" + 내 IP주소 반환
System.out.println(localhost.getHostName());
// 내 pc명 반환
System.out.println(localhost.getHostAddress());
// 내 IP주소 반환
.getByName() 메소드: 도메인 주소라는 고유한 주소를 통해서 해당 서버 PC의 정보를 얻어내서 반환
=> InetAddress 형태로 반환
=> 내 주소뿐 아니라 다른 사이트의 정보도 알아볼 수 있음
InetAddress googleHost = InetAddress.getByName("www.google.com");
System.out.println(googleHost.getHostName());
// 구글 서버명 반환
System.out.println(googleHost.getHostAddress());
// 구글 IP주소 반환
System.out.println(googleHost.length);
// 구글 서버 개수 반환
*웹에서의 통신 방식은 http 프로토콜 통신=> https는 http에 보안 절차가 추가된 버전임
서버와 클라이언트의 통신을 위해서는 "스트림"이 필요하고,스트림을 연결하기 위한 "소켓"도 필요함
*소켓 프로그래밍- TCP 방식: 데이터 전송 속도가 느리지만 데이터를 정확하고 안정적으로 전달 가능함- UDP 방식: 데이터 전송 속도를 빠르나 신뢰성이 없는 데이터가 전송될 수 있음