20.03 ~ 20.08 국비교육/JAVA

package java.net.

찹키리 2020. 4. 2. 10:32

<네트워크>

 

1)DNS: 도메인 네임 서비스(Domain Name System)

IP(ex. 207.48.56.111: 숫자) <-> 도메인(ex. daum.net: 이름) 서로 매핑시키는 시스템

2)Port: 컴퓨터에 실행되고 있는 서비스 응답번호. 컴퓨터에 외부신호가 들어올 때 호출되는 프로그램 식별번호(0~65535)
외부와 통신하는 모든 프로그램은 포트번호가 있다.
-> cmd: netstat -an

3)IP: 주소, IPv4, 32비트, 8비트 8비트 8비트 8비트(0~255를 넘지 않는 정수 네 단위로 구성)
-> cmd: ipconfig /all

4)SM: subnetMask

IP는 네트워크와 호스트주소로 이루어져 있는데, 이 둘의 비율을 조절하는 기능을 수행한다.
ex. 255.255.255.0 -> 앞의 세 단위는 네트워크 주소, 뒤의 한 단위가 호스트주소(실제 가용주소는 253개)

5)GW: gateWay, 출구, 라우터의 포트번호
subnet(intranet)에서 다른 네트워크에 접속하는 것 = internet

 

 

 

 



<Socket 프로그래밍>

 

java.io.* 
java.net.* 
-> 서로 같이 사용하는 경우가 많다.

 

 

*Socket 클래스를 사용하려고 할 때 
Socket(InetAddress address, int port)  
-Creates a stream socket and connects it to the specified port number at the specified IP address.

1)import한다 

 

2)인스턴스를 만든다  

-api document를 참고해 따라간다...

 



[Socket]: 서버-클라이언트의 통신을 가능하게 하는 툴

 

서버소켓 <-----통신-----> 클라이언트

 

 

서버소켓: 포트를 감시

 

클라이언트: 소켓(ip, port)을 통해 서버에 접속 시도

 

 

-서버와 클라이언트의 통신 과정

올바른 포트번호로 접속 -> 서버가 소켓을 생성(클라이언트 정보 획득) -> 양 쪽에 소켓 생성 완료(서로 상대방의 정보를 갖고 있음) -> 서버는 소켓을 이용해 출력객체 생성 -> 클라이언트는 서버로부터의 정보를 받기 위한 입력객체 생성

 

 

 

-기억하면 좋은 포트번호

: 보통 2000미만은 시스템에서 사용하는 것이 많으므로 유저가 만든 프로그램은 높은 번호를 사용할 것을 권장

 

FT - 21
MAIL - 25
WEB - 80
APACHE TOMCAT - 8080
ORACLE - 1521
MYSQL 3306

 

 

 

 

<서버 멀티스레드>

서버소켓
:포트를 감시하는 역할 <---------- (클라이언트)소켓(IP. Port)

소켓(클라이언트 정보) 생성

출력객체 생성   ----flush()---->  입력객체(버퍼) 생성

 

 

 

-----> 일단 프린트의 소스코드를 외워라

 

 

 

 

<채팅 프로그램>

: 클라이언트도 서버에 내용을 보내야 한다.
-> 서버와 클라이언트가 서로 주고 받는 형태
-> 클라이언트에도 출력객체가 필요, 서버엔 입력객체가 필요
--> 결국 클라이언트와 서버 모두 입출력 객체 다 갖고 있는 상태

 

 

1)입출력 객체를 모두 갖고 있다 .

2)서버소켓과 포트감시를 빼면 서버와 클라이언트가 대칭구조

3)서버와 클라이언트의 입출력 객체는 모두 loop를 돈다.

4)키보드에 입력된 데이터를 "출력 객체"와 연결(키보드 내용을 읽어서 출력 객체에 'wirte')
->전송 데이터는 키보드에서 입력된다. (System.in)

5)입력 객체 쪽에 멀티스레드 처리 -> 내가 내용을 입력하고 있는 도중에 또 내용이 들어올 수 있기 때문. 언제 상대쪽으로부터 정보가 들어올 지 모르기 때문에 동시에 스레드를 처리하도록 한다.

'20.03 ~ 20.08 국비교육 > JAVA' 카테고리의 다른 글

package java.awt. / pacakge javax.swing.  (0) 2020.04.04
package java.io.  (0) 2020.04.01
package java.util.  (0) 2020.03.31
package java.lang.  (0) 2020.03.31
패키지, 패키지 간 참조  (0) 2020.03.31