My Melody Is Cute Java 네트워킹 API
본문 바로가기

개발공부🌷/Web

Java 네트워킹 API

 

클라이언트서버아키텍처를 수행하기 위한 기술적 수단과 통신규약(프로토콜)

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클래스

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