本書全面介紹如何使用Java開發(fā)網(wǎng)絡程序,將學習使用Java的網(wǎng)絡類庫既快速又輕松地完成常見的網(wǎng)絡編程任務。本書共11章,主要內(nèi)容包括: TCP/IP協(xié)議基礎、搭建Windows下的Java網(wǎng)絡開發(fā)環(huán)境、搭建Linux下的Java網(wǎng)絡開發(fā)環(huán)境、本機網(wǎng)絡信息編程、Java多線程編程、TCP套接字編程、FTP網(wǎng)絡編程、UDP編程和即時通信系統(tǒng)的設計、網(wǎng)絡服務器設計、網(wǎng)絡性能工具IPerf的使用、IPv6編程等。
本書適用于所有Java編程人員,包括Java初學者和資深Java開發(fā)人員。本書還可作為高校的Java教材以及企業(yè)的Java培訓教材。
用Java開發(fā)的人越來越多,但是市面上介紹Java網(wǎng)絡編程的書不多,而且所講述的內(nèi)容大多比較老舊(和一線開發(fā)關系不大),所以迫切需要一本緊貼一線實戰(zhàn)的網(wǎng)絡編程書。編者長期從事一線Java開發(fā),知道哪些內(nèi)容是初學者和中級開發(fā)者必須要掌握的,哪些是開發(fā)過程中的痛點和難點,所以編寫了本書將這些經(jīng)驗轉(zhuǎn)化成一個個精心設計的小實例來展現(xiàn)給讀者!
本書對套接字編程的重點知識進行簡單介紹,以使讀者能夠迅速掌握,并且能夠迅速將所學的技能應用到日常工作中。除了基本的套接字編程外,本書還設計了較為復雜的綜合案例,使讀者能靈活地應用套接字編程(包括TCP編程和UDP編程)。另外,本書還重點闡述了網(wǎng)絡服務器的設計,比如如何設計并發(fā)服務器。本書所選的都是典型、主流的方法和庫,既高效又實用,同時精心打磨技術細節(jié),以提高讀者的學習效率。
本書的一大特色是實例豐富,讀者可以跟著實例進行實戰(zhàn)練習。同時本書講解細致,從基本的開發(fā)環(huán)境搭建到基本的網(wǎng)絡編程技術,再逐步過渡到網(wǎng)絡服務器的設計,學習曲線非常平緩,這樣可以使讀者持續(xù)保持學習熱情,一步一步往前走。通過閱讀本書,讀者不僅可以掌握網(wǎng)絡編程的實用技術,還可以進一步提高用面向?qū)ο蟮乃枷雭碓O計和編寫Java軟件的能力。
本書的資源文件可以登錄機械工業(yè)出版社華章公司的網(wǎng)站(www.hzbook.com)下載,方法是:搜索到本書,然后在頁面上的資源下載模塊下載即可。如果下載有問題,請發(fā)送電子郵件至booksaga@126.com。如果讀者有興趣,也可以加入QQ技術交流群(492823357)參與討論
雖然編者盡了努力,但是書中依舊可能會出現(xiàn)疏漏之處,懇請讀者批評指正。另外,如果閱讀本書的過程中遇到問題,可以發(fā)送郵件(3189505006@qq.com)進行咨詢,編者也會將本書的勘誤放到QQ(3189505006)空間中。
編 者
2021年9月
前言
第1章 TCP/IP基礎1
1.1 什么是TCP/IP1
1.2 TCP/IP的分層結(jié)構(gòu)1
1.3 應用層5
1.3.1 DNS6
1.3.2 端口6
1.4 傳輸層7
1.4.1 TCP7
1.4.2 UDP7
1.5 網(wǎng)絡層8
1.5.1 IP8
1.5.2 ARP14
1.5.3 RARP16
1.5.4 ICMP17
1.6 數(shù)據(jù)鏈路層26
1.6.1 數(shù)據(jù)鏈路層的基本概念26
1.6.2 數(shù)據(jù)鏈路層的主要功能26
第2章 在Windows下搭建Java開發(fā)環(huán)境28
2.1 下載JDK28
2.2 安裝JDK29
2.3 配置JDK環(huán)境變量29
2.4 在命令行下編譯Java程序30
2.5 在Eclipse中開發(fā)Java程序31
2.6 下載Eclipse31
2.7 啟動Eclipse32
2.8 個Eclipse下的Java工程33
2.9 在工作區(qū)打開工程36
2.10 搭建Java Web開發(fā)環(huán)境36
2.10.1 下載Tomcat36
2.10.2 安裝Tomcat36
2.10.3 在Eclipse中配置Tomcat38
2.10.4 個Eclipse下的JSP工程39
2.10.5 個JavaBean工程43
2.11 使用JNI47
2.12 搭建Java圖形界面開發(fā)環(huán)境51
第3章 在Linux下搭建Java開發(fā)環(huán)境57
3.1 部署虛擬機Linux環(huán)境57
3.1.1 在VMware下安裝Linux57
3.1.2 關閉防火墻60
3.1.3 制作快照61
3.1.4 以橋接模式連接Linux虛擬機61
3.1.5 通過終端工具連接Linux虛擬機64
3.1.6 與虛擬機互傳文件66
3.2 命令行編譯運行Java程序66
3.3 圖形化界面開發(fā)Java程序67
3.3.1 個IDEA開發(fā)的Java應用程序68
3.3.2 使用第三方JAR庫71
3.3.3 使用Linux中的SO庫75
第4章 本機網(wǎng)絡信息編程79
4.1 IP地址類InetAddress79
4.1.1 獲取遠程Web主機的IP地址81
4.1.2 獲取本地環(huán)回地址82
4.1.3 單網(wǎng)卡下的本機地址83
4.2 網(wǎng)絡接口類NetworkInterface85
4.2.1 得到所有網(wǎng)絡接口87
4.2.2 得到本機所有網(wǎng)卡的IP地址89
第5章 Java多線程編程94
5.1 使用多線程的好處94
5.2 多線程編程的基本概念95
5.2.1 操作系統(tǒng)和多線程95
5.2.2 線程的基本概念96
5.2.3 操作系統(tǒng)中線程的狀態(tài)97
5.2.4 線程函數(shù)97
5.2.5 線程標識98
5.3 Java中的多線程概述98
5.3.1 線程的創(chuàng)建98
5.3.2 線程的狀態(tài)100
5.3.3 線程同步100
5.3.4 線程阻塞101
5.3.5 守護線程102
5.3.6 線程組102
5.4 Thread類103
5.4.1 構(gòu)造方法104
5.4.2 成員方法104
5.4.3 創(chuàng)建線程107
5.4.4 線程的屬性111
5.4.5 調(diào)度策略113
5.4.6 Java中線程的狀態(tài)116
5.4.7 線程休眠118
5.4.8 線程讓步119
5.4.9 線程結(jié)束122
5.4.10 等待線程結(jié)束126
第6章 TCP套接字編程128
6.1 網(wǎng)絡程序的架構(gòu)128
6.2 套接字的基本概念129
6.3 套接字地址131
6.3.1 構(gòu)造方法131
6.3.2 getAddress方法132
6.3.3 getPort方法132
6.3.4 getHostName方法132
6.3.5 createUnresolved方法132
6.4 套接字的類型133
6.5 TCP套接字編程的基本步驟135
6.6 服務器的ServerSocket類135
6.6.1 構(gòu)造方法136
6.6.2 accept方法137
6.6.3 close方法137
6.6.4 ServerSocket類的其他方法137
6.7 客戶機的Socket類139
6.7.1 構(gòu)造方法139
6.7.2 得到輸入流getInputStream139
6.7.3 得到輸出流getOutputStream141
6.7.4 禁用輸出流shutdownOutput141
6.7.5 連接服務器的connect函數(shù)141
6.7.6 獲取和設置讀取數(shù)據(jù)的超時時間142
6.7.7 Socket類的其他方法142
6.8 實戰(zhàn)TCP通信144
6.9 深入理解TCP編程149
6.9.1 數(shù)據(jù)發(fā)送和接收涉及的緩沖區(qū)149
6.9.2 TCP數(shù)據(jù)傳輸?shù)奶攸c150
6.9.3 數(shù)據(jù)發(fā)送的6種情形150
6.9.4 數(shù)據(jù)接收時碰到的情形151
6.9.5 簡單情況的數(shù)據(jù)接收152
6.9.6 定長數(shù)據(jù)的接收156
6.9.7 ObjectInputStream和ObjectOutputStream159
6.9.8 發(fā)送和接收類對象167
6.9.9 變長數(shù)據(jù)的接收169
6.10 帶圖形界面的登錄程序170
6.11 處理多種接收意外情況173
第7章 FTP網(wǎng)絡編程180
7.1 FTP概述180
7.2 FTP的工作原理181
7.3 FTP的傳輸方式182
7.3.1 FTP的工作方式183
7.3.2 FTP命令184
7.3.3 FTP應答碼186
7.4 開發(fā)FTP客戶端程序188
7.4.1 客戶端需求分析188
7.4.2 概要設計188
7.4.3 詳細設計188
7.4.4 開發(fā)FTP服務端程序193
第8章 UDP編程和即時通信系統(tǒng)的設計213
8.1 UDP概述213
8.2 TCP和UDP的比較214
8.3 UDP在Java中的實現(xiàn)215
8.4 UDP通信的流程219
8.5 個UDP程序219
8.6 即時通信概述221
8.7 系統(tǒng)平臺的選擇222
8.7.1 應用系統(tǒng)平臺模式的選擇222
8.7.2 C/S模式介紹222
8.7.3 數(shù)據(jù)庫系統(tǒng)的選擇223
8.8 系統(tǒng)需求分析223
8.8.1 即時消息的一般需求223
8.8.2 即時消息的協(xié)議需求224
8.8.3 即時消息的安全需求224
8.8.4 即時信息的加密和鑒別224
8.8.5 注冊需求225
8.8.6 通信需求225
8.9 系統(tǒng)總體設計225
8.10 即時通信系統(tǒng)的實施原理226
8.10.1 即時通信的工作方式226
8.10.2 即時通信的基本技術原理226
8.10.3 即時通信方式227
8.11 功能模塊劃分227
8.11.1 模塊劃分227
8.11.2 服務端程序的功能228
8.11.3 客戶端程序的功能228
8.11.4 服務端程序的多線程229
8.11.5 客戶端程