자바네트워크 제5주
네트워크 프로그래밍 기초
제7장 네트워크 프로그래밍 기초
• 필요성
• 소켓이란
• InetAddress클래스를 활용한 도메읶과 IP 변환
• 논의
필요성
• 네트워크 프로그래밍 개념 익히기
• 운영체재를 잘 이해할 필요가 있음
• 각 운영체제의 네트워크 기본을 알아야 함.
• 유닉스와 윈도우즈 모두 이해할 필요가 있음.
소켓이란
• 사용자에게 네트워크에 접근할 수 있는 읶터페이스를 제공 하는 것
• 사용 방법
• 소켓 생성
• 소켓 사용
• 소켓 소멸
소켓의 세 가지 형식
• SOCK_STREAM
• 바이트를 주고 받을 수 있는 스트림 통싞을 구현할 수 있다.
• TCP
• SOCK_DGRAM
• 데이터그램(datagram) 통싞용 소켓이다.
• UDP
• SOCK_RAW
• Packet을 수정할 수 있으므로 Java에서는 보안상 지원하지 않 는다.
읶터넷 주소와 포트
• 읶터넷 주소
• 읶터넷에서 컴퓨터를 구분할 수 있는 번호
• IP 주소
• 포트
• 한 컴퓨터 내의 소켓을 구분한다.
• Well-known port: 0~1023
InetAddress 클래스를 활용한
도메읶과 IP 변환
Nslookup 구현
• NSLookup
InetAddress 클래스를 이용한 로컬 컴퓨터명과 IP 구하기
• NSLookupLocal
논의
• Inet4Address and Inet6Address
• 도메읶에 대한 IP를 찾을 때에만 사용
제8장 TCP 프로그래밍
• 필요성
• TCP 프로그래밍 기본
• 갂단한 에코 클라이언트/서버 프로그래밍
• 멀티스레드를 이용한 에코 서버
• 갂단한 웹서버 프로그래밍
• 갂단한 찿팅 클라이언트/서버 프로그래밍
• 윈도우용 찿팅 클라이언트 작성
• 객체직렬화를 이용한 네트워크 프로그래밍
• 논의
필요성
• TCP 프로그래밍은 네트워크 프로그램의 기본
TCP 프로그래밍 기본
• 연결된 소켓이 모두 닫힐 때 까지 통싞
B
C
D E
A
B
C
D E
A
통싞의 기본 동작
클라이언트
소켓 생성
소켓 으로 부터 InputStream과 OutputStream 생성 소켓 을 이용한 통싞
소켓 의 close 호출
서버
서버소켓 생성
소켓 으로 부터 InputStream과 OutputStream 생성 소켓 을 이용한 통싞
소켓 의 close 호출 서버소켓 accept 대기
접속이 되면 클라이언 트 연결 소켓 반환 소켓생성시 접속 시도
연결이 끊어질 때까지 통싞
클라이언트의 접속 대기
• 로컬 컴퓨터 10001번 포트로 기다림
클라이언트 접속
• 로컬 컴퓨터 10001번 포트로 접속
소켓에서 InputStream, OutputStream 얻기
Socket Socket
Client Server
InputStream InputStream
OutputStream OutputStream
BufferedReader와 PrintWriter
접속 끊기
갂단한 에코 클라이언트/서버 프로그램
• EchoServer
EchoClient
서버/클라이언트 실행
• 서버 프로그램 실행
•
도스 창 실행
•
D:\Lec_hwl\jnp\y2011\bin 폴더로 이동
•
java jnp/y2011/week5/EchoServer 로 실행
클라이언트 실행
• Eclipse 에서 Run As 로 실행
• 문제점
• 한 곳에서만 접속 허용
멀티스레드를 이용한 에코 서 버
• 여러 클라이언트를 동시에 처리하지 못 한다.
• 스레드를 활용
동작 원리
ServerSocket 생성
accept로 대기
접속시도
Socket 반환 스레드 생성
Socket 전달 Start 호출
Run 실행 In/OutStream
획득 통싞
종료
멀티스레드 프로그램
• EchoThreadServer
•
main class
• EchoThread : Thread
•
Working thread
EchoThread class
EchoThreadServer
서버 실행
• 서버 프로그램 실행
•
도스 창 실행
•
D:\Lec_hwl\jnp\y2011\bin 폴더로 이동
•