TOP
0
0
三民出版.新書搶先報|最速、最優惠的新鮮貨報給你知!
NIO與Socket編程技術指南(簡體書)
滿額折

NIO與Socket編程技術指南(簡體書)

商品資訊

人民幣定價:99 元
定價
:NT$ 594 元
優惠價
87517
海外經銷商無庫存,到貨日平均30天至45天
下單可得紅利積點:15 點
商品簡介
目次
相關商品

商品簡介

本書主要介紹Java語言中高性能處理的原理技術:NIO和Socket。非常詳細地講解了NIO中的緩衝區、通道、選擇器、編碼,以及使用Socket技術實現TCP/IP和UDP編程,細化到了演示全部SocketOption的特性,這對理解基於NIO和Socket技術為基礎所開發的NIO框架是非常有好處的,本書以案例為入口,將大部分在開發中常見的NIO和Socket的技術點都做了演示,細化到API級。在互聯網技術日新月異的時代,Netty以及Kafka等這些高性能處理框架都在底層應用到了NIO和Socket,所以當你目前是有計劃進軍互聯網技術時,本書也許會帶給你一個方向。

目次

目 錄?Contents
前 言
第1章緩衝區的使用 1
1.1NIO概述 5
1.2緩衝區介紹 6
1.3Buffer類的使用 7
1.3.1包裝數據與獲得容量 7
1.3.2限制獲取與設置 10
1.3.3位置獲取與設置 12
1.3.4剩餘空間大小獲取 13
1.3.5使用Buffer mark()方法處理標記 14
1.3.6知識點細化測試 15
1.3.7判斷只讀 22
1.3.8直接緩衝區 22
1.3.9還原緩衝區的狀態 23
1.3.10對緩衝區進行反轉 24
1.3.11判斷是否有底層實現的數組 28
1.3.12判斷當前位置與限制之間是否有剩餘元素 29
1.3.13重繞緩衝區 30
1.3.14獲得偏移量 32
1.3.15使用List.toArray(T[])轉成數組類型 33
1.4ByteBuffer類的使用 34
1.4.1創建堆緩衝區與直接緩衝區 35
1.4.2直接緩衝區與非直接緩衝區的運行效率比較 37
1.4.3包裝wrap數據的處理 39
1.4.4put(byte b)和get()方法的使用與position自增特性 40
1.4.5put(byte[] src, int offset, int length)和get(byte[] dst, int offset, int length)方法的使用 41
1.4.6put(byte[] src)和get(byte[] dst)方法的使用 46
1.4.7put(int index, byte b)和get(int index)方法的使用與position不變 49
1.4.8put(ByteBuffer src)方法的使用 50
1.4.9putType()和getType()方法的使用 51
1.4.10slice()方法的使用與arrayOffSet()為非0的測試 53
1.4.11轉換為CharBuffer字符緩衝區及中文的處理 54
1.4.12轉換為其他類型的緩衝區 58
1.4.13設置與獲得字節順序 63
1.4.14創建只讀緩衝區 65
1.4.15壓縮緩衝區 65
1.4.16比較緩衝區的內容 66
1.4.17複製緩衝區 70
1.4.18對緩衝區進行擴容 72
1.5CharBuffer類的API使用 73
1.5.1重載append(char)/append(Char-Sequence)/append(CharSequence, start, end)方法的使用 73
1.5.2讀取相對於當前位置的給定索引處的字符 74
1.5.3put(String src)、int read(CharBuffer target)和subSequence(int start, int end)方法的使用 74
1.5.4static CharBuffer wrap(Char-Sequence csq, int start, int end)方法的使用 76
1.5.5獲得字符緩衝區的長度 76
1.6小結 77
第2章通道和FileChannel類的使用 78
2.1通道概述 78
2.2通道接口的層次結構 80
2.2.1AsynchronousChannel接口的介紹 82
2.2.2AsynchronousByteChannel接口的介紹 84
2.2.3ReadableByteChannel接口的介紹 84
2.2.4ScatteringByteChannel接口的介紹 85
2.2.5WritableByteChannel接口的介紹 86
2.2.6GatheringByteChannel接口的介紹 87
2.2.7ByteChannel接口的介紹 88
2.2.8SeekableByteChannel接口的介紹 89
2.2.9NetworkChannel接口的介紹 90
2.2.10MulticastChannel接口的介紹 91
2.2.11InterruptibleChannel接口的介紹 92
2.3AbstractInterruptibleChannel類的介紹 93
2.4FileChannel類的使用 95
2.4.1寫操作與位置的使用 97
2.4.2讀操作 100
2.4.3批量寫操作 106
2.4.4批量讀操作 109
2.4.5部分批量寫操作 117
2.4.6部分批量讀操作 120
2.4.7向通道的指定position位置寫入數據 128
2.4.8讀取通道指定位置的數據 130
2.4.9設置位置與獲得大小 135
2.4.10截斷緩衝區 136
2.4.11將數據傳輸到其他可寫入字節通道 138
2.4.12將字節從給定可讀取字節通道傳輸到此通道的文件中 141
2.4.13執行鎖定操作 145
2.4.14FileLock lock()方法的使用 160
2.4.15獲取通道文件給定區域的鎖定 160
2.4.16FileLock tryLock()方法的使用 162
2.4.17FileLock類的使用 162
2.4.18強制將所有對通道文件的更新寫入包含文件的存儲設備 165
2.4.19將通道文件區域直接映射到內存 167
2.4.20打開一個文件 174
2.4.21判斷當前通道是否打開 181
2.5小結 182
第3章獲取網絡設備信息 183
3.1NetworkInterface類的常用方法 184
3.1.1獲得網絡接口的基本信息 186
3.1.2獲取MTU大小 189
3.1.3子接口的處理 190
3.1.4獲得硬件地址 192
3.1.5獲得IP地址 194
3.1.6InterfaceAddress類的使用 200
3.1.7判斷是否為點對點設備 202
3.1.8是否支持多播 202
3.2NetworkInterface類的靜態方法 204
3.2.1根據索引獲得NetworkInterface對象 204
3.2.2根據網絡接口名稱獲得NetworkInterface對象 204
3.2.3根據IP地址獲得NetworkInterface對象 205
3.3小結 205
第4章實現Socket通信 206
4.1基於TCP的Socket通信 206
4.1.1驗證ServerSocket類的accept()方法具有阻塞特性 207
4.1.2驗證Socket中InputStream類的read()方法也具有阻塞特性 210
4.1.3客戶端向服務端傳遞字符串 212
4.1.4服務端向客戶端傳遞字符串 213
4.1.5允許多次調用write()方法進行寫入操作 215
4.1.6實現服務端與客戶端多次的往來通信 216
4.1.7調用Stream的close()方法造成Socket關閉 219
4.1.8使用Socket傳遞PNG圖片文件 221
4.1.9TCP連接的3次“握手”過程 222
4.1.10標誌位SYN與ACK值的自增特性 225
4.1.11TCP斷開連接的4次“揮手”過程 226
4.1.12“握手”的時機與立即傳數據的特性 227
4.1.13結合多線程Thread實現通信 228
4.1.14服務端與客戶端互傳對象以及I/O流順序問題 231
4.2ServerSocket類的使用 233
4.2.1接受accept與超時Timeout 233
4.2.2構造方法的backlog參數含義 235
4.2.3參數backlog的默認值 237
4.2.4構造方法ServerSocket (int port, int backlog, InetAddress bindAddr)的使用 238
4.2.5綁定到指定的Socket地址 240
4.2.6綁定到指定的Socket地址並設置backlog數量 242
4.2.7獲取本地SocketAdress對象以及本地端口 243
4.2.8InetSocketAddress類的使用 244
4.2.9關閉與獲取關閉狀態 247
4.2.10判斷Socket綁定狀態 248
4.2.11獲得IP地址信息 249
4.2.12Socket選項ReuseAddress 249
4.2.13Socket選項ReceiveBuffer-
Size 257
4.3Socket類的使用 259
4.3.1綁定bind與connect以及端口生成的時機 259
4.3.2連接與超時 261
4.3.3獲得遠程端口與本地端口 262
4.3.4獲得本地InetAddress地址與本地SocketAddress地址 263
4.3.5獲得遠程InetAddress與遠程SocketAddress()地址 264
4.3.6套接字狀態的判斷 265
4.3.7開啟半讀與半寫狀態 266
4.3.8判斷半讀半寫狀態 268
4.3.9Socket選項TcpNoDelay 270
4.3.10Socket選項SendBufferSize 274
4.3.11Socket選項Linger 276
4.3.12Socket選項Timeout 287
4.3.13Socket選項OOBInline 288
4.3.14Socket選項KeepAlive 291
4.3.15Socket選項TrafficClass 293
4.4基於UDP的Socket通信 294
4.4.1使用UDP實現Socket通信 295
4.4.2測試發送超大數據量的包導致數據截斷的情況 297
4.4.3Datagram Packet類中常用API的使用 299
4.4.4使用UDP實現單播 300
4.4.5使用UDP實現廣播 301
4.4.6使用UDP實現組播 303
4.5小結 305
第5章選擇器的使用 306
5.1選擇器與I/O多路複用 306
5.2核心類Selector、SelectionKey和
SelectableChannel的關係 307
5.3通道類AbstractInterruptibleChannel與接口InterruptibleChannel的介紹 310
5.4通道類SelectableChannel的介紹 311
5.5通道類AbstractSelectableChannel的介紹 313
5.6通道類ServerSocketChannel與接口NetworkChannel的介紹 313
5.7ServerSocketChannel類、Selector和SelectionKey的使用 315
5.7.1獲得ServerSocketChannel與ServerSocket socket對象 316
5.7.2執行綁定操作 317
5.7.3執行綁定操作與設置backlog 317
5.7.4阻塞與非阻塞以及accept()方法的使用效果 318
5.7.5獲得Selector對象 320
5.7.6執行註冊操作與獲得SelectionKey對象 321
5.7.7判斷註冊的狀態 322
5.7.8將通道設置成非阻塞模式再註冊到選擇器 323
5.7.9使用configureBlocking (false)方法解決異常 323
5.7.10判斷打開的狀態 324
5.7.11獲得阻塞鎖對象 325
5.7.12獲得支持的SocketOption列表 325
5.7.13獲得與設置SocketOption 327
5.7.14獲得SocketAddress對象 327
5.7.15阻塞模式的判斷 328
5.7.16根據Selector找到對應的SelectionKey 328
5.7.17獲得SelectorProvider對象 329
5.7.18通道註冊與選擇器 330
5.7.19返回此通道所支持的操作 332
5.7.20執行Connect連接操作 333
5.7.21判斷此通道上是否正在進行連接操作 336
5.7.22完成套接字通道的連接過程 338
5.7.23類FileChannel中的long tran-sferTo (position, count, Writable-ByteChannel)方法的使用 340
5.7.24方法public static SocketChannel open (SocketAddress remote)與SocketOption的執行順序 342
5.7.25傳輸大文件 344
5.7.26驗證read和write方法是非阻塞的 346
5.8Selector類的使用 348
5.8.1驗證public abstract int select()方法具有阻塞性 350
5.8.2select()方法不阻塞的原因和解決辦法 351
5.8.3出現重複消費的情況 353
5.8.4使用remove()方法解決重複消費問題 355
5.8.5驗證產生的set1和set2關聯的各自對象一直是同一個 356
5.8.6int selector.select()方法返回值的含義 360
5.8.7從已就緒的鍵集中獲得通道中的數據 362
5.8.8對相同的通道註冊不同的相關事件返回同一個SelectionKey 363
5.8.9判斷選擇器是否為打開狀態 365
5.8.10獲得SelectorProvider provider對象 365
5.8.11返回此選擇器的鍵集 366
5.8.12public abstract int select(long timeout)方法的使用 367
5.8.13public abstract int selectNow()方法的使用 368
5.8.14喚醒操作 369
5.8.15測試若干細節 370
5.9SelectionKey類的使用 380
5.9.1判斷是否允許連接SelectableChannel對象 381
5.9.2判斷是否已準備好進行讀取 383
5.9.3判斷是否已準備好進行寫入 384
5.9.4返回SelectionKey關聯的選擇器 386
5.9.5在註冊操作時傳入attachment附件 387
5.9.6設置attachment附件 389
5.9.7獲取與設置此鍵的interest集合 390
5.9.8判斷此鍵是否有效 392
5.9.9獲取此鍵的ready操作集合 392
5.9.10取消操作 395
5.10DatagramChannel類的使用 396
5.10.1使用DatagramChannel類實現UDP通信 398
5.10.2連接操作 399
5.10.3斷開連接 400
5.10.4將通道加入組播地址 400
5.10.5將通道加入組播地址且接收指定客戶端數據 402
5.11Pipe.SinkChannel和Pipe.SourceChannel類的使用 403
5.12SelectorProvider類的使用 406
5.13小結 407
第6章AIO的使用 408
6.1AsynchronousFileChannel類的使用 408
6.1.1獲取此通道文件的獨佔鎖 409
6.1.2獲取通道文件給定區域的鎖 410
6.1.3實現重疊鎖定 412
6.1.4返回此通道文件當前大小與通道打開狀態 413
6.1.5CompletionHandler接口的使用 413
6.1.6public void failed (Throwable exc, A attachment)方法調用時機 414
6.1.7執行指定範圍的鎖定與傳入附件及整合接口 415
6.1.8執行鎖定與傳入附件及整合接口CompletionHandler 416
6.1.9lock (position, size, shared, attachment,CompletionHandler)方法的特點 418
6.1.10讀取數據方式1 420
6.1.11讀取數據方式2 420
6.1.12寫入數據方式1 421
6.1.13寫入數據方式2 422
6.2AsynchronousServerSocketChannel和AsynchronousSocketChannel類的使用 422
6.2.1接受方式1 425
6.2.2接受方式2 427
6.2.3重複讀與重複寫出現異常 428
6.2.4讀數據 429
6.2.5寫數據 433
6.3同步、異步、阻塞與非阻塞之間的關係 436
6.4小結 437

您曾經瀏覽過的商品

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 517
海外經銷商無庫存,到貨日平均30天至45天

暢銷榜

客服中心

收藏

會員專區