목차 일부
저자 서문 ... 4
이 책의 주요 내용 ... 6
Chapter 1 네트워크 기초
현장 Point ... 22
01 네트워크와 네트워킹 ... 23
02 네트워크 통신 방법 ... 24
03 OSI 7계층 ... 25
04 인터넷 프로토콜 ... 27
05 인터넷 애플리케이션 프로토콜 ... 31
O6 TCP/IP 스...
더보기
목차 전체
저자 서문 ... 4
이 책의 주요 내용 ... 6
Chapter 1 네트워크 기초
현장 Point ... 22
01 네트워크와 네트워킹 ... 23
02 네트워크 통신 방법 ... 24
03 OSI 7계층 ... 25
04 인터넷 프로토콜 ... 27
05 인터넷 애플리케이션 프로토콜 ... 31
O6 TCP/IP 스택 ... 32
07 소켓과 포트 ... 34
08 보안 ... 35
생각해볼 문제 ... 38
Chapter 2 스레드
현장 Point ... 40
01 스레드란 ... 41
02 스레드의 생성과 시작 ... 44
white-box ... 45
black-box ... 46
상속 vs 합성 ... 47
03 스레드의 종료 ... 50
04 데몬스레드와 join() ... 54
05 스레드 그룹 ... 57
O6 스레드 우선순위 ... 60
07 멀티스레드와 동기화 ... 63
자바의 런타임 데이터 영역들과 공유 데이터 ... 64
lock, monitor, synchronized ... 67
wait, notify, notifyAll ... 69
ThreadLocal ... 69
08 생성자-소비자 패턴 ... 72
생각해볼 문제 ... 78
Chapter 3 자바 IO
현장 Point ... 80
01 자바 IO에 대한 선입견 ... 81
02 자바 IO도 객체다 ... 81
03 재사용되기 위해서 설계된 자바 IO ... 82
04 특수한 IO 객체 ... 89
05 자바 IO란 ... 90
06 생성자가 중요한 자바 IO 관련 클래스 ... 92
07 자바 IO 프로그래밍을 잘하려면 ... 92
생각해볼 문제 ... 97
Chapter 4 바이트 스트림 : 바이트 단위 IO 클래스
현장 Point ... 100
01 File 클래스 ... 101
File 클래스를 이용한 파일의 정보 구하기 ... 102
File 클래스를 이용한 파일 삭제 ... 104
File 클래스를 이용한 디렉토리의 파일 목록 출력 ... 105
File 클래스를 이용한 임시 파일의 생성과 삭제 ... 107
02 바이트 단위 IO 클래스 ... 109
InputStream과 OutputStream ... 110
FileInputStream과 FileOutputStream ... 113
DataInputStream과 DataOutputStream ... 120
ByteArrayInputStream과 ByteArrayOutputStream ... 126
PipedInputStream과 PipedOutputStream ... 132
생각해볼 문제 ... 137
Chapter 5 문자 스트림 : 문자 단위 IO 클래스
현장 Point ... 140
01 문자 단위 IO 클래스 ... 141
02 Reader와 Writer ... 142
03 InputStreamReader와 OutputStreamWriter ... 143
문자 단위로 파일 내용을 읽어 들여 화면에 출력하기 ... 145
04 Filereader와 FileWriter ... 146
FileReader와 FileWriter를 이용한 텍스트 파일 복사 ... 147
05 BufferdReader와 BufferedWriter ... 149
앞서 작성한 파일 복사 프로그램 개선 ... 150
O6 PrinterWriter ... 152
키보드로부터 한 줄씩 입력 받아 파일에 저장하기 ... 153
07 CharArrayReader와 CharArrayWriter ... 155
Char 배열 형태로 만든 후, 이 내용을 화면에 출력하기 ... 156
08 StringReader와 StringWriter ... 158
생각해볼 문제 ... 160
Chapter 6 객체 스트림
현장 Point ... 162
01 영화 '플라이'로 살펴본 객체 스트림 ... 163
02 첫 번째 예제 : 생각해볼 문제와 간단한 예제 ... 164
03 객체 스트림 소개 ... 169
04 두 번째 예제 : 나의 책 목록 ... 171
05 마샬링하고 싶지 않은 필드에 대한 처리 ... 177
06 세 번째 예제 : 윈도우 저장과 읽기 ... 177
07 ObjectOutputStream 클래스의 생성자와 메소드 ... 181
08 ObjectInputStream 클래스의 생성자와 메소드 ... 182
09 객체 스트림의 예외 ... 183
생각해볼 문제 ... 184
Chapter 7 네트워크 프로그래밍 기초
현장 Point ... 186
01 소켓이란 ... 187
소켓의 세 가지 형식 ... 188
인터넷 주소와 포트 ... 189
02 InetAddress 클래스를 활용한 도메인과 IP 변환 ... 190
InetAddress 클래스를 이용한 nslookup 명령 구현 ... 191
InetAddress 클래스를 이용한 로컬 컴퓨터명과 IP 구하기 ... 194
생각해볼 문제 ... 196
Chapter 8 TCP 프로그래밍
현장 Point ... 198
01 TCP 프로그래밍 기본 ... 199
클라이언트의 접속 대기 ... 201
클라이언트 접속 ... 201
Socket으로부터 InputStream과 OutputStream 구하기 ... 202
접속 끊기 ... 203
02 간단한 에코 클라이언트/서버 프로그래밍 ... 204
에코 서버 프로그래밍 ... 205
에코 클라이언트 프로그래밍 ... 207
에코 서버와 에코 클라이언트 실행 ... 208
에코 클라이언트와 에코 서버의 문제점 ... 209
03 멀티스레드를 이용한 에코 서버 ... 209
멀티스레드 에코 서버 프로그래밍 ... 210
멀티스레드 에코 서버 실행 ... 213
04 간단한 웹 서버 프로그래밍 ... 214
브라우저의 요청정보 출력 ... 214
SimpleWebServerBasic 실행 ... 216
간단한 웹 서버 프로그래밍 : SimpleWebServer ... 217
index.html 파일 작성 ... 220
브라우저를 이용해서 요청정보를 보내고 응답 받기 ... 221
SimpleWebServer의 문제점 ... 221
05 간단한 채팅 클라이언트/서버 프로그래밍 ... 222
채팅 서버 프로그래밍 : ChatServer ... 224
채팅 클라이언트 프로그래밍 : ChatClient ... 230
채팅 클라이언트와 서버의 실행 ... 234
채팅 클라이언트/서버에서 아쉬운 부분 ... 235
O6 윈도우용 채팅 클라이언트 작성 ... 235
윈도우용 채팅 클라이언트 작성 개요 ... 236
윈도우용 채팅 클라이언트 실행 ... 241
윈도우용 채팅 클라이언에서 개선해야 할 부분 ... 242
07 객체 직렬화를 이용한 네트워크 프로그래밍 ... 243
직렬화 가능 객체 : SendData ... 244
계산 서버 : ObjectCalculatorServer ... 244
계산 클라이언트 : ObjectCalculatorClent ... 247
객체 직렬화를 이용한 계산 서버와 계산 클라이언트 실행 ... 249
객체 직렬화는 편리하지만 무겁다 ... 250
생각해볼 문제 ... 251
Chapter 9 UDP 프로그래밍
현장 Point ... 254
01 UDP를 이용한 프로그래밍 방법 ... 255
02 UDP를 이용한 에코 클라이언트/서버 프로그래밍 ... 257
에코 서버 프로그래밍 ... 257
에코 클라이언트 프로그래밍 ... 259
에코 클라이언트와 서버의 실행 ... 262
03 UDP를 이용한 타임 서버와 클라이언트 작성 ... 263
타임 서버 프로그래밍 ... 263
타임 클라이언트 프로그래밍 ... 265
클라이언트와 서버 프로그래밍 실행 ... 267
타임 서버와 클라이언트 프로그래밍 응용 ... 268
생각해볼 문제 ... 269
Chapter 10 URL 관련 클래스
현장 Point ... 272
01 URL이란 ... 273
02 URL 클래스 ... 274
URL 클래스의 사용 목적 ... 274
URL 클래스를 이용한 URL 주소 분석 : URLlnfo ... 274
URL 주소를 분석하는 URLlnfo 실행 ... 276
03 URL 클래스를 이용해서 웹사이트 읽어 오기 ... 276
웹사이트의 내용을 긁어오는 WebSpider ... 278
WebSpider 실행 ... 280
URL 클래스의 문서 호출 방식 ... 281
04 URLConnection 클래스로 웹 페이지 읽기 ... 282
웹 페이지를 읽어 오는 WebSpiderWithURLConnection ... 283
WebSpiderwithURLConnection 애플리케이션 실행 ... 285
05 GET 방식으로 URL 주소 호출하기 ... 285
GET 방식으로 사용자 쿼리 전달 : DaumSerch ... 287
DaumSerch 실행 ... 289
06 POST 방식으로 URL 주소 호출하기 ... 290
POST 방식으로 사용자 쿼리 전달 : PostConnection ... 291
PostConnection 실행 ... 294
07 URLEncoder를 이용한 문자열 변환 ... 294
아스키 코드가 아닌 문자열을 특수한 문자열로 변환하기 ... 295
URLEncoderTest 실행 ... 296
08 URLDecoder 클래스를 이용한 디코딩 ... 296
URLDecoder를 이용해서 디코딩하기 ... 296
URLDecoderTest 실행 ... 297
생각해볼 문제 ... 298
Chapter 11 멀티캐스트
현장 Point ... 300
01 멀티캐스트 방식이란 ... 301
02 멀티캐스트 백본 : MBone ... 302
03 간단한 인터넷 방송 클라이언트와 서버 구현 ... 302
방송 서버 구현 : MulticastServer ... 303
방송 클라이언트 구현 : MulticastClient ... 304
방송 서버와 클라이언트 실행 ... 306
04 채팅 프로그램 작성 ... 306
채팅 클라이언트 작성 : MulticastchatClient ... 307
채팅 클라이언트 실행 ... 313
생각해볼 문제 ... 314
Chapter 12 NIO 개요
현장 Point ... 316
01 자바 IO는 느리다? ... 317
02 블록킹 자바 IO ... 317
03 IO 향상을 위한 운영체제 수준의 기술 ... 319
버퍼 ... 319
Scatter/Gather ... 324
가상 메모리 ... 325
메모리 맵 파일 ... 326
파일 락 ... 327
04 자바의 새로운 변화 ... 329
자바의 포인터 버퍼 도입 ... 329
네이티브 IO 서비스를 제공해주는 채널 도입 ... 330
셀렉터 도입 ... 330
생각해볼 문제 ... 332
Chapter 13 버퍼
현장 Point ... 334
01 버퍼 개요 ... 335
02 버퍼의 네 가지 기본 속성 ... 336
03 버퍼에서 데이터 읽고 쓰기 ... 339
상대적 위치를 이용해서 1바이트씩 읽고 쓰기 ... 340
절대적 위치를 이용해서 1바이트씩 읽고 쓰기 ... 342
배열을 이용해서 한꺼번에 많은 데이터를 읽고 쓰기 ... 345
버퍼 자체를 파라미터로 받아서 쓰기 ... 349
04 Buffer 클래스가 제공하는 유틸리티 메소드 ... 350
clear() 메소드 ... 350
rewind() 메소드 ... 351
flip() 메소드 ... 352
05 Buffer 하위 클래스 유틸리티 메소드 ... 352
compact() 메소드 ... 352
duplicate() 메소드 ... 353
asReadOnlyBuffer() 메소드 ... 356
slice() 메소드 ... 356
06 버퍼 만들기 ... 359
07 ByteBuffer ... 362
다이렉트 버퍼 ... 362
뷰 버퍼 ... 364
다른 데이터 형식으로 읽고 쓰기 ... 366
바이트 순서 ... 368
08 CharBuffer ... 370
09 채널에서 버퍼 사용하기 ... 374
채널의 데이터를 버퍼로 읽어들이기 ... 374
버퍼에 저장된 데이터를 채널에 쓰기 ... 375
생각해볼 문제 ... 376
Chapter 14 채널
현장 Point ... 378
01 채널 개요 ... 379
02 채널의 기본 인터페이스 ... 381
Channel, InterruptibleChannel ... 382
ReadableByteChannel, WritableByteChannel, ByteChannel ... 384
ScatteringByteChannel, GatheringByteChannel ... 386
03 파일채널 ... 391
기본 속성 ... 394
파일 락킹 ... 398
메모리 매핑 ... 403
채널 간 직접 전송 ... 412
04 소켓채널 ... 420
비블록킹 모드 ... 422
서버소켓채널 ... 424
소켓채널 ... 426
데이터그램채널 ... 430
생각해볼 문제 ... 437
Chapter 15 셀렉터
현장 Point ... 440
01 셀렉터 개요 ... 441
02 기존의 네트워크 프로그래밍 모델 ... 442
03 비블록킹 모델 ... 445
04 SelectableChannel ... 448
05 SelectionKey ... 452
06 Selector ... 456
07 비블록킹 서버 만들기 ... 460
생각해볼 문제 ... 474
Chapter 16 향상된 서버 만들기
현장 Point ... 476
01 들어가기에 앞서 ... 477
02 효율적인 메모리 사용 ... 477
03 비효율적인 데이터 전송에 대한 고려 ... 478
04 동시성을 이용한 성능 극대화 ... 479
Accept, Process의 분리 ... 479
SelectiorPool 사용 ... 480
ThreadPool 사용 ... 481
05 향상된 서버 만들기 ... 482
생각해볼 문제 ... 506
Chapter 17 RMI
현장 Point ... 508
01 RMI란 ... 509
02 RMI 구조 ... 510
03 RMI는 어떻게 동작하는가 ... 511
04 로컬 객체를 원격 객체로 변경하기 ... 512
로컬 객체를 이용한 Hello 출력 애플리케이션 ... 512
원격 객체를 이용한 Hello 애플리케이션으로 수정 ... 514
05 RMI를 이용한 계산기 애플리케이션 ... 522
계산기 원격 인터페이스 작성 ... 523
원격 인터페이스를 구현하는 원격 객체 작성 ... 523
계산기 원격 객체를 등록하는 CalculatorBind 작성 ... 524
원격 객체를 찾아서 사용하는 CalculatorClient 작성 ... 525
컴파일 ... 526
스텁과 스켈레톤 생성 ... 527
rmiregistry 실행과 계산기 원격 객체 등록 ... 527
계산기 클라이언트 실행 ... 528
06 RMI를 이용한 채팅 애플리케이션 ... 529
클라이언트 쪽의 원격 인터페이스 작성 ... 530
서버 쪽의 원격 인터페이스 작성 ... 531
ChatServer 원격 인터페이스를 구현한 서버 쪽 원격 객체 작성 ... 531
ChatClent 원격 인터페이스를 구현하는 채팅 클라이언트 작성 ... 533
컴파일 ... 536
스텁과 스켈레톤 생성 ... 536
채팅 애플리케이션 실행 ... 537
07 RMI-IIOP ... 538
RMI-IIOP란 ... 538
RMI-IIOP와 RMI의 개발 방법 차이 ... 539
08 RMI-IIOP 예제 ... 540
원격 인터페이스 작성 ... 540
원격 인터페이스를 구현하는 원격 객체 작성 ... 541
원격 객체를 등록하기 위한 애플리케이션의 작성 ... 541
원격 객체를 실제로 이용하는 클라이언트 프로그램 작성 ... 543
컴파일과 스텁, 타이의 생성 ... 545
tnameserv 실행과 원격 객체 등록 ... 546
원격 객체를 이용하는 클라이언트 실행 ... 546
생각해볼 문제 ... 547
찾아보기 ... 548
더보기 닫기