作者簡介
孫衛琴,IT女性作家。1997年畢業於上海交通大學,隨後一直從事基於Java的軟體開發工作,還從事過J2EE培訓和諮詢。與自2002年首部作品問世以來,孫衛琴一直專注於開源技術圖書創作。孫衛琴以她女性獨特的視角和細膩的文風開闢了自己的寫作天地。2004年是孫衛琴豐收的一年,也是java開源技術圖書市場充滿亮點的一年,由孫衛琴撰寫的《精通Struts:基於MVC的JavaWeb設計與開發》、《Tomcat與JavaWeb開發技術詳解》兩本書是2004年國內原創圖書市場的驚喜。截止到2007年9月,兩本圖書都已經達到10次以上印刷,以如此專業性強的圖書而獲得一致好評和空前的市場成功在今日的IT圖書市場上實屬驚人。編輯推薦
閱讀《Java網路編程精解》,讀者不僅可以掌握網路編程的實用技術,還可以進一步提高按照面向對象的思想來設計和編寫Java軟體的能力。《Java網路編程精解》適用於所有Java編程人員,包括Java初學者及資深Java開發人員。《Java網路編程精解》還可作為高校的Java教材,以及企業的Java培訓教材,也可作為Sun公司SCJD認證的輔導教材。
目錄
第1章 Java網路編程入門 1
1.1 進程之間的通信 1
1.2 計算機網路的概念 3
1.3 OSI參考模型 5
1.4 TCP/IP參考模型和TCP/IP協定 8
1.4.1 IP協定 11
1.4.2 TCP協定及連線埠 14
1.4.3 RFC簡介 15
1.4.4 客戶/伺服器通信模式 16
1.5 用Java編寫客戶/伺服器程式 17
1.5.1 創建EchoServer 18
1.5.2 創建EchoClient 20
1.6 小結 22
1.7 練習題 23
第2章 Socket用法詳解 25
2.1 構造Socket 25
2.1.1 設定等待建立連線的逾時時間 26
2.1.2 設定伺服器的地址 26
2.1.3 設定客戶端的地址 27
2.1.4 客戶連線伺服器時可能拋出的異常 27
2.2 獲取Socket的信息 30
2.3 關閉Socket 32
2.4 半關閉Socket 33
2.5 設定Socket的選項 38
2.5.1 TCP_NODELAY選項 38
2.5.2 SO_RESUSEADDR選項 38
2.5.3 SO_TIMEOUT選項 39
2.5.4 SO_LINGER選項 42
2.5.5 SO_RCVBUF選項 44
2.5.6 SO_SNDBUF選項 45
2.5.7 SO_KEEPALIVE選項 45
2.5.8 OOBINLINE選項 45
2.5.9 服務類型選項 45
2.5.10 設定連線時間、延遲和頻寬的相對重要性 46
2.6 傳送郵件的SMTP客戶程式 47
2.7 小結 51
2.8 練習題 52
第3章 ServerSocket用法詳解 55
3.1 構造ServerSocket 55
3.1.1 綁定連線埠 55
3.1.2 設定客戶連線請求佇列的長度 56
3.1.3 設定綁定的IP位址 58
3.1.4 默認構造方法的作用 58
3.2 接收和關閉與客戶的連線 59
3.3 關閉ServerSocket 60
3.4 獲取ServerSocket的信息 60
3.5 ServerSocket選項 62
3.5.1 SO_TIMEOUT選項 62
3.5.2 SO_REUSEADDR選項 63
3.5.3 SO_RCVBUF選項 64
3.5.4 設定連線時間、延遲和頻寬的相對重要性 64
3.6 創建多執行緒的伺服器 65
3.6.1 為每個客戶分配一個執行緒 65
3.6.2 創建執行緒池 67
3.6.3 使用JDK類庫提供的執行緒池 72
3.6.4 使用執行緒池的注意事項 74
3.7 關閉伺服器 76
3.8 小結 80
3.9 練習題 81
第4章 非阻塞通信 83
4.1 執行緒阻塞的概念 83
4.1.1 執行緒阻塞的原因 83
4.1.2 伺服器程式用多執行緒處理阻塞通信的局限 84
4.1.3 非阻塞通信的基本思想 85
4.2 java.nio包中的主要類 87
4.2.1 緩衝區Buffer 88
4.2.2 字元編碼Charset 90
4.2.3 通道Channel 90
4.2.4 SelectableChannel類 92
4.2.5 ServerSocketChannel類 93
4.2.6 SocketChannel類 93
4.2.7 Selector類 96
4.2.8 SelectionKey類 97
4.3 伺服器編程範例 100
4.3.1 創建阻塞的EchoServer 100
4.3.2 創建非阻塞的EchoServer 103
4.3.3 在EchoServer中混合用阻塞模式與非阻塞模式 110
4.4 客戶端編程範例 114
4.4.1 創建阻塞的EchoClient 114
4.4.2 創建非阻塞的EchoClient 116
4.4.3 創建非阻塞的PingClient 120
4.5 小結 126
4.6 練習題 127
第5章 創建非阻塞的HTTP伺服器 129
5.1 HTTP協定簡介 129
5.1.1 HTTP請求格式 129
5.1.2 HTTP回響格式 132
5.1.3 測試HTTP請求 133
5.2 創建非阻塞的HTTP伺服器 137
5.2.1 伺服器主程式:
HttpServer類 137
5.2.2 具有自動增長的緩衝區的ChannelIO類 138
5.2.3 負責處理各種事件的
Handler接口 140
5.2.4 負責處理接收連線就緒
事件的AcceptHandler類 140
5.2.5 負責接收HTTP請求和傳送HTTP回響的RequestHandler類 141
5.2.6 代表HTTP請求的Request類 143
5.2.7 代表HTTP回響的Response類 145
5.2.8 代表回響正文的Content接口及其實現類 147
5.2.9 運行HTTP伺服器 149
5.3 小結 150
5.4 練習題 151
第6章 客戶端協定處理框架 153
6.1 客戶端協定處理框架的主要類 153
6.2 在客戶程式中運用協定處理框架 154
6.2.1 URL類的用法 154
6.2.2 URLConnection類的用法 156
6.3 實現協定處理框架 160
6.3.1 創建EchoURLConnection類 161
6.3.2 創建EchoURLStreamHandler及工廠類 162
6.3.3 創建EchoContentHandler類及工廠類 163
6.3.4 在EchoClient類中運用ECHO協定處理框架 165
6.4 小結 166
6.5 練習題 167
第7章 用Swing組件展示HTML文檔 169
7.1 在按鈕等組件上展示HTML文檔 170
7.2 用JEditorPane組件創建簡單的瀏覽器 171
7.3 小結 179
7.4 練習題 179
第8章 基於UDP的
數據報和套接字 181
8.1 UDP協定簡介 181
8.2 DatagramPacket類 184
8.2.1 選擇數據報的大小 185
8.2.2 讀取和設定DatagramPacket的屬性 185
8.2.3 數據格式的轉換 186
8.2.4 重用DatagramPacket 187
8.3 DatagramSocket類 189
8.3.1 構造DatagramSocket 189
8.3.2 接收和傳送數據報 190
8.3.3 管理連線 190
8.3.4 關閉DatagramSocket 191
8.3.5 DatagramSocket的選項 191
8.3.6 IP服務類型選項 193
8.4 DatagramChannel類 193
8.4.1 創建DatagramChannel 194
8.4.2 管理連線 194
8.4.3 用send()方法傳送數據報 194
8.4.4 用receive()方法接收數據報 195
8.4.5 用write()方法傳送數據報 198
8.4.6 用read()方法接收數據報 199
8.5 組播Socket 202
8.5.1 MulticastSocket類 205
8.5.2 組播Socket的範例 207
8.6 小結 209
8.7 練習題 210
第9章 對象的序列化與反序列化 213
9.1 JDK類庫中的序列化API 213
9.2 實現Serializable接口 218
9.2.1 序列化對象圖 220
9.2.2 控制序列化的行為 222
9.2.3 readResolve()方法在單例類中的運用 229
9.3 實現Externalizable接口 231
9.4 可序列化類的不同版本的序列化兼容性 233
9.5 小結 235
9.6 練習題 236
第10章 Java語言的反射機制 239
10.1 Java Reflection API簡介 239
10.2 在遠程方法調用中運用反射機制 244
10.3 代理模式 248
10.3.1 靜態代理類 248
10.3.2 動態代理類 250
10.3.3 在遠程方法調用中
運用代理類 253
10.4 小結 258
10.5 練習題 259
第11章 RMI框架 261
11.1 RMI的基本原理 262
11.2 創建第一個RMI套用 264
11.2.1 創建遠程接口 264
11.2.2 創建遠程類 265
11.2.3 創建伺服器程式 267
11.2.4 創建客戶程式 269
11.2.5 運行RMI套用 270
11.3 遠程對象工廠設計模式 272
11.4 遠程方法中的參數與返回值傳遞 277
11.5 回調客戶端的遠程對象 281
11.6 遠程對象的並發訪問 286
11.7 分散式垃圾收集 289
11.8 遠程對象的equals()、hashCode()和clone()方法 294
11.9 使用安全管理器 294
11.10 RMI套用的部署及類的動態載入 295
11.11 遠程激活 297
11.12 小結 303
11.13 練習題 304
第12章 通過JDBC API訪問資料庫 305
12.1 JDBC的實現原理 306
12.2 安裝和配置MySQL資料庫 308
12.3 JDBC API簡介 310
12.4 JDBC API的基本用法 314
12.4.1 處理字元編碼的轉換 317
12.4.2 把連線資料庫的各種屬性放在配置檔案中 318
12.4.3 管理Connection、Statement和ResultSet對象的生命周期 321
12.4.4 執行SQL腳本檔案 326
12.4.5 處理SQLException 328
12.4.6 輸出JDBC日誌 329
12.4.7 獲得新插入記錄的主鍵值 329
12.4.8 設定批量抓取屬性 330
12.4.9 檢測驅動器使用的JDBC版本 330
12.4.10 元數據 331
12.5 可滾動及可更新的結果集 333
12.6 行集 339
12.7 調用存儲過程 346
12.8 處理Blob和Clob類型數據 347
12.9 控制事務 351
12.9.1 事務的概念 351
12.9.2 聲明事務邊界的概念 353
12.9.3 在mysql.exe程式中聲明事務 354
12.9.4 通過JDBC API聲明事務邊界 356
12.9.5 保存點 357
12.9.6 批量更新 358
12.9.7 設定事務隔離級別 360
12.10 資料庫連線池 362
12.10.1 創建連線池 363
12.10.2 DataSource數據源 369
12.11 小結 371
12.12 練習題 372
第13章 基於MVC和RMI的分散式套用 375
13.1 MVC設計模式簡介 375
13.2 store套用簡介 377
13.3 創建視圖 381
13.4 創建控制器 389
13.5 創建模型 390
13.6 創建獨立套用 394
13.7 創建分散式套用 395
13.8 小結 398
13.9 練習題 398
第14章 通過JavaMail API收發郵件 401
14.1 E-mail協定簡介 401
14.1.1 SMTP簡單郵件傳輸協定 401
14.1.2 POP3郵局協定 402
14.1.3 接收郵件的新協定IMAP 402
14.1.4 MIME簡介 403
14.2 JavaMail API簡介 403
14.3 建立JavaMail應用程式的開發環境 405
14.3.1 獲得JavaMail API的類庫 405
14.3.2 安裝和配置郵件伺服器 406
14.4 創建JavaMail應用程式 408
14.5 身份驗證 412
14.6 URLName類 416
14.7 創建和讀取複雜電子郵件 418
14.7.1 郵件地址 419
14.7.2 郵件頭部 420
14.7.3 郵件標記 421
14.7.4 郵件正文 422
14.8 操縱郵件夾 427
14.9 小結 432
14.10 練習題 433
第15章 安全網路通信 435
15.1 SSL簡介 435
15.1.1 加密通信 436
15.1.2 安全證書 436
15.1.3 SSL握手 437
15.1.4 創建自我簽名的安全證書 438
15.2 JSSE簡介 439
15.2.1 KeyStore、KeyManager與TrustManager類 442
15.2.2 SSLContext類 443
15.2.3 SSLServerSocketFactory類 444
15.2.4 SSLSocketFactory類 444
15.2.5 SSLSocket類 444
15.2.6 SSLServerSocket類 447
15.2.7 SSLEngine類 448
15.3 創建基於SSL的安全伺服器和安全客戶 453
15.4 小結 457
15.5 練習題 457
第16章 CORBA簡介 459
16.1 創建IDL接口 460
16.2 創建IDL接口的實現類 460
16.3 創建伺服器程式 461
16.4 創建客戶程式 462
16.5 運行CORBA程式 463
16.6 小結 464
16.7 練習題 465
第17章 Web服務簡介 467
17.1 SOAP簡介 467
17.2 建立Apache AXIS環境 469
17.3 在Tomcat上發布
Apache-AXIS Web套用 470
17.4 創建SOAP服務 471
17.4.1 創建提供SOAP
服務的Java類 471
17.4.2 創建SOAP服務的
發布描述符檔案 471
17.5 管理SOAP服務 472
17.5.1 發布SOAP服務 472
17.5.2 刪除SOAP服務 473
17.6 創建和運行SOAP
客戶程式 473
17.7 發布JWS服務 476
17.8 小結 476
17.9 練習題 477
附錄A 本書範例的運行方法 479
A.1 本書所用軟體的下載地址 479
A.2 部分軟體的安裝 479
A.2.1 安裝JDK 480
A.2.2 安裝ANT 480
A.2.3 安裝Tomcat 481
A.3 編譯源程式 481
A.4 運行客戶/伺服器程式 482