IP주소
java.net 패키지의 InetAddress 클래스를 사용하면 로컬컴퓨터의 IP 주소를 얻을 수 잇고
도메인 이름을 사용하여 특정 홈페이지의 IP 주소를 가져올 수 있다
static InetAddress getByName(String host) - 도메인명을 통해 IP주소획득
byte[] getAddress() - IP주소를 byte배열로 반환
String getHostName() - 호스트의 이름을 반환
String getHostAddress() - 호스트의 IP주소를 반환
TCP네트워킹 단일 클라이언트 연결
TCP/IP프로토콜은 4가지 계층구조
전송계층은 TCP와 UDP를 포함
TCP는 연결형 프로토콜 , 연결된 상태에서 데이터를 주고받음, 신뢰성과 순서보장
UDP는 비연결형 프로토콜, 신뢰성보다 속도
소켓이란? 컴퓨터 간 통신에 사용되는 양쪽 끝단(endpoint)
Java의 java.net패키지의 ServerSocket(연결수락하는쪽)과
Socket클래스(연결요청,서버와 데이터주고받을때)를 통해 연결형 통신구현
TCP서버
서버쪽 개발
1.포트번호 상수정의 : 값변경 방지,여러 위치에서 사용되더라도 한곳에서 수정되게 유지보수 용이
2. 객체생성 : 상수로 정의한 포트번호를 생성자 파라미터로 넘겨 객체 생성
3. accept() 메서드 호출 : 클라이언트의 연결을 수랑하기 위해 사용 , 요청이 올때까지 블로킹(실행멈춘상태) 요청이 들어오면 통신용 Socket 반환
통신을 위한 입출력 스트림
TCP클라이언트
클라이언트와 서버를 연결
다수의 클라이언트 연결
원인 : TcpServer에서 봤던 serverSocket.accept()랑 연관
accept() 메서드는 동기적인 블로킹연산 수행 ,
하나의 연결이 되어있는 상태일때 그 연결이 끝나기 전까지 다른 클라이언트는 무한대기상태로 들어간다.
멀티스레드 구현
멀티스레딩 : 여러개의 스레드를 가진다는 것은 여러스레드가 동시에 작업 수행할 수있다
서버쪽 코드를 수정.
메인스레드 이외에 추가작업 수 만큼 스레드 생성한다.
자바는 작업 스레드도 객체로 관리하기때문에 클래스가 필요하고
요청이 올때마다 처리할 수 있는 새로운 인스턴스를 생성해주면된다.
- 작업스레드 생성하는 법 두가지
1. Runnable 인터페이스를 구현한 객체에서 run() 메서드를 구현하는 방법
2. Thread클래스를 상속받은 하위클래스에서 run() 메서드를 구현해서 생성후 실행
URI 클래스와 URL클래스
URL클래스의 openConnection()메서드를 통해서 URLConnection 객체를 얻을수있다
URLConnection 클래스와 REST API 통신
Postman (API툴) 로 전달받은 JSON데이터를 Java를 사용해 얻어오기
Java의 HTTP API 통신
1. Socket을 사용하는 API통신
2. URLConnection을 사용하는 API통신
Socket사용 / 앞의 실습과 다른점?
1.SSL연결을 위한 소켓생성
2.HTTP요청 헤더 작성
3.응답읽기
4.JSON형식의 전체 응답데이터 출력
URLConnection사용 / 앞의 실습과 다른점?
1.URL객체 생성 및 HttpURLConnection획득
2.HTTP요청 헤더 메서드를 사용해서 작성
3.상태코드 메서드를 사용해서 받아오기
4.입출력 스트림 생성 및 데이터 읽어오기
URLConnection은 추상 클래스이며 여러 하위클래스가 존재한다
'개발공부🌷 > Web' 카테고리의 다른 글
HTTP (0) | 2023.11.08 |
---|---|
웹을 구성하는 기술 (0) | 2023.11.07 |
네트워크 (0) | 2023.11.07 |