목차
저자 서문 ... 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
닫기