서버(Server)와 클라이언트(Client)
=> 두 컴퓨터의 사이에 있어 서비스를 이용하는 사용자와 서비스를 제공하는 역할.
// 사용하는 쪽 : 클라이언트
제공하는 쪽 : 서버
Request : 클라이언트가 웹 브라우저를 사용하여 사용하고자 하는 페이지를 서버에 요청하는 과정
Response : 서버에서 요청받은 프로세스를 처리하기 위해 검색하고 해당 결과를 웹 브라우저에 송신
=> 웹 브라우저는 응답받은 정보를 일정 형식에 따라 화면에 표현 => HTML Tag
ㄴ> HTML//XML
종류 | 설명 |
Web Server | 웹 브라우저와 HTTP프로토콜을 사용하여 사용자의 요구에 따른 특정 서비스를 제공하는 서버 |
Mail Server | 인터넷을 통해 사용자 간의 전자 우편을 주고 받는 서비스를 제공 |
FTP Server | 서버 내에 파일을 업로드, 다운로드할 수 있도록 파일 관리 기능을 제공 |
Telent Server | Terminal,텍스트로만 이루어진 창에서 특정 명령어를 통해 원격지 서버를 접속,관리 |
DataBase Server | Data를 저장하고,원격지에서 접속할 경우 권한에 따라 열람,추가,수정,삭제 기능을 처리한다. |
우리가 배울것 => Web Server : Tomcat
DataBase Server : Oracle
FTP Server : Git Hub
Web Application
=> 인터넷(외부통신), 인트라넷(내부통신) 통해 웹브라우저를 이용 ( 브라우저가 없으면 실행 불가능 )
: PC에 굳이 설치를 하지 않아도 온라인 상에서 배포가 가능 하므로 유지관리하기 편함
웹앱 => 웹 브라우저용 어플리케이션
ㄴ> PC, Mobile 기기 구분 없이 실행가능하다.(웹브라우저만 있다면)
ㄴ> 발전 버전 : 클라우드 => AWS(Amazon Web Service), 세일즈포스, 에저(MS) => 데이터저장 + 솔루션
대표 브라우저 : 익스플로어,엣지(MS), 크롬(Google), 사파리(Apple)
크롬 기반 브라우저 : 웨일(naver), 삼성인터넷(samsung)
그밖의 : 파이어폭스, 오페라 (점유율이 낮음)
*브라우저와 홈페이지는 다른 개념!!
웹 표준 : 모든 브라우저에서 동일한 모습을 보이기 위한 규격
=> HTML5 / CSS3 / JavaScript
Web Server
=> 사용자에게 HTML페이지나,jpg,png같은 이미지를 HTTP 프로토콜(표준 프로토콜)을 통해 웹 브라우저에 제공하는 서버, 정적 (또는 동적) 인 요소들을 화면에 보여주는 역할
Apache : Tomcat( 환경설정 => XML문서로, 서버관련 데이터 => server.jar)
ㄴ> Apache Software Foundation 에서 만든 서버로 HTTP 통신에 대한 여러 라이브러리를 제공
WAS : Web Application Server
사용자가 요청한 서비스의 결과를 스크립트 언어 등으로 가공하여 생성한 동적 페이지를 사용자에게 보여주는 역할
Tomcat
: Servlet과 JSP를 통한 동적인 웹 문서를 처리하기 위해 만든 웹 애플리케이션 서버
wlidfly => SpringFramWork으로 대체 중
: Jboss라고도 불리며, 톰캣이 제공하는 servlet container 뿐만 아니라, EJB container 를 별도로 제공하여 폭넓은 서비스를 구현
JEUS => 대형 컴퓨터( 기본 운영체제 UNIX/XENIX ) 흔히 서버 컴퓨터
: 국산 WAS, 대용량의 데이터 트랜잭션을 고성능으로 처리하며 개발 및 운영에 관한 기술 지원이 뛰어나다.
네트워크
클라이언트(Client)와 서버(Server)
=> 서버 : 클라이언트에게 네트워크를 통해 서비스를 제공하는 시스템
클라이언트 : 서비스를 사용하는 사용자(시스템)
네트워크 관련 클래스
InetAddress Class => 인터넷 주소에 관항 정보를 다루는 클래스
ㄴ> Inet => Internet의 약자
: 생성자가 따로 없으며, InetAddress클래스의 정적(static) 메소드에서 정보를 받아오는 형식으로 사용
=> 클래스의 생성자는 하나만 존재하지만, 기본생성자의 접근제한자가 default 이기 때문에 new 연산자 객체를 생성할 수 없다.
package java.net;
public class InetAddress {
InetAddress(){ // default 생성자
}
}
- 주요 메소드 -
리턴타입 / 메소드 | 설명 |
byte[] getAddress() | IP주소를 byte배열로 반환 |
static InetAddress[] // getAllByName(String host) | 도메인명(host)에 지정된 모든 호스트의 IP주소를 배열로 반환 |
static InetAddress getByAddress(byte[] addr) | byte 배열을 통해 IP주소를 얻음 |
static InetAddress getByName(String host) | 도메인명(host)을 통해 IP주소 얻음 |
String getHostAddress() | 호스트의 IP주소를 반환 |
String getHostName() | 호스트의 이름을 반환 |
static InetAddress getLocalHost() | 지역호스트의 IP주소 반환 |
boolean isMulticatAddress() | 멀티캐스트 주소인지 확인 |
boolean isLoopbackAddress() | loopback 주소인지 확인 |
URL Class
:URL이란 인터넷의 접근 가능한 자원의 주소를 표현하는 형식
형식 => 프로토콜, 인터넷 주소, 포트 번호, 파일 경로 등을 사용해 표현
예시) 프로토콜://인터넷주소[:포트번호][/디렉토리[/파일이름]][?쿼리스트링]
http :// about.kbs.co.kr [ ] <= 생략 가능하기에 괄호로 묶여있는것
http : // localhost : 8080<-포트번호 / index.html<-파일명
http : // localhost : 8080<-포트번호 / log<-디렉토리명 / login.html<-파일명
http : // localhost : 8080<-포트번호 / log<-디렉토리명 / login.html<-파일명 ? id = qweqwe & pw = asfs
id pw : 파라미터(parameter)명
qweqwe asfs : 파라미터(parameter) 값
localhost => 127.0.0.1
프로토콜 : 자원에 접근하기 위해 서버와 통신에 사용되는 통신규약 (보통 http / 보안이 필요할때 https )
인터넷주소(IP) : 자원을 제공하는 서버의 주소(이름)
포트번호 : 통신에 사용되는 서버의 포트번호
디렉토리(폴더), 파일이름 : 자원이 저장되어 있는 서버상의 위치
쿼리스트링 : ‘?’ 문자 뒤에 오는 통신에서 사용되는 매개변수
요청대상파일 ? 파라미터명 = 파라미터값
요청대상 파일 ? 파라미터명 = 파라미터값 & 파라미터명 = 파라미터값 & ...
* 파라미터값은 항상 문자열로 전달
URL Class 생성자
생성자 | 설명 |
URL(String protocol, String host, int port, String file) | protocol : 프로토콜 host : 컴퓨터 이름 port : 포트 번호 file : URL에 존재하는 자원(파일)의 이름 urlString : 모든 요소를 포함한 문자열 |
URL(String protocol, String host, String file) | |
URL(String urlString) |
URL Class 메소드
메소드 | 설명 |
String getFile() | URL 파일 이름 반환 |
String getHost() | URL 호스트 이름 반환 |
String getPort() | URL 포트 이름 반환 |
String getProtocol() | URL 프로토콜 이름 반환 |
String toExternalForm() | 전체 URL 문자열 반환 |
URLConnection openConnection() | URL 연결 후 URLConnection 객체 반환 |
InputStream openStream() | URL 정보를 읽기 위한 InputStream 객체 반환 |
URL Connection Class
: 어플리케이션과 URL간의 통신 연결을 위한 작업을 하는 클래스
URL내용을 읽어오거나, URL 주소에 GET/POST 메소드 형식으로 데이터를 전달할 때 사용
추상클래스로써 자신의 객체를 생성할 수 없고 URL openConnection()을 통해 사용
URL -> openConnection() -> URLConnection -> getInputStream -> InputStream(내용읽기) 순으로 처리
URLConnection을 이용하면 입력 스트림과 출력 스트림 모두 개설할 수 있다
TCP
Socket
: 네트워크에 연결된 컴퓨터간에 데이터를 주고 받을 때 사용하는 도구(소프트웨터 개발 도구)
"자바"에서는 TCP 소켓 통신 (외부 통신)=> Socket Class, ServerSocket Class 제공
UDP 통신(내부통신) => DatagramPacket Class, DatagramSocket Class 제공
Socket 주요 생성자
생성자 | 설명 |
Socket(InetAddress address, int port) | 주어진 IP address와 포트를 가지고 소켓 생성 |
Socket(String host, int port) | 주어진 host와 포트를 가지고 소켓 생성 |
* socket 객체 생성 시 2가지 예외 발생
1. Host를 찾을 수 없거나 Port가 열려 있지 않은 경우 UnknownHostException 예외 발생
2. Network 실패나 방화벽 때문에 서버에 접근할 수 없을 때 IOException 예외 발생
Socket 주요 메소드
메소드 | 설명 |
InetAddress getInetAddress() | InetAddress로 IP주소 반환 |
InputStream getInputStream() | 입력 스트림 반환 |
InetAddress getLocalAddress() | 로컬 주소 반환 |
int getPort() | 포트 반환 |
boolean isClosed() | 소켓이 닫혀있으면 true, 열려있으면 false 반환 |
boolean isConnected() | 소켓이 연결되어 있으면 true, 비 연결이면 false 반환 |
void setSoTimeout(int itmeout) | 소켓 객체의 timeout시간을 설정 |
void close() | 객체 닫기 |
ServerSocket Class
: TCP 서버 소켓을 의미
클라이언트의 TCP연결을 받기 위해서는 ServerSocket클래스의 객체를 생성해야한다.
생성자 | 설명 |
ServerSocket(int port) | 주어진 포트로 서버소켓 생성 |
ServerSocket(int port, int backlog) | 주어진 포트로 서버소켓을 생성하고 연결 대기 큐의 크기를 지정 |
ServerSocket 메소드
메소드 | 설명 |
Socket accept() | 클라이언트의 연결 요청이 들어올 때까지 대기하다가 연결 수립이 되면 클라이언트와 통신 가능한 Socket 객체를 반환 |
void close() | ServerSocket 닫기 |
int getLocalPort() | 청취하고 있는 Port 번호 반환 |
int getSoTimeout() accept() | 메소드가 유효할 수 있는 시간을 반환. 0이면 무한대 |
boolean isClosed() | 객체가 닫혀있는지 여부 반환 |
void setSoTimeout(int timeout) accept() | 메소드가 유효할 수 있는 시간을 설정 |
실습)
데이터를 보내고 받는 연습
반드시 서버를 먼저 실행 시키고 클라이언트 실행!!
입력값 주고 받기
'Learn > KH정보교육원' 카테고리의 다른 글
[KH정보교육원 당산] 18일차 ( socket예제 - 퀴즈 만들기) (0) | 2021.04.02 |
---|---|
[KH정보교육원 당산] 연습문제 2 (네트워크) (0) | 2021.04.01 |
[KH정보교육원 당산] 16일차 ( Thread ) (0) | 2021.03.31 |
[KH정보교육원 당산] 15일차 (Collection ) (0) | 2021.03.30 |
[KH정보교육원 당산] 14일차 (외부라이브러리 사용 마지막) (0) | 2021.03.29 |