<네트워크>
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 |