内容abcxyz0000索引.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
内容abcxyz0000索引

伺服器程式時更能夠顯出其優勢 使用NIO設計伺服器程式可以讓主程式(main執行緒)處理多個客戶端的需求,而不需要為每個客戶端產生個別的執行緒 一個客戶端的服務包含兩個通道(Channels),一是等待客戶端連線的「連線通道」ServerSocketChannel,另一個則是專門處理資料接收與傳送的「傳輸通道」SocketChannel 9-4 NIO伺服器 「選擇器」Selector 選擇器可容納需要觀察的通道,如連線通道與傳輸通道 各個通道使用register()方法把自己「註冊」(或登記)在選擇器中 有任何已註冊的動作(SelectionKey)發生時,可由選擇器的selectedKey()方法得到一個已發生的動作集合 9-4 NIO伺服器 處理模式 使用ServerSocketChannel,一開始是傾聽並接受連線 待接收客戶端的連線之後,再轉換為資料傳輸的SocketChannel 9-4 NIO伺服器 處理步驟 建立ServerSocketChannel 註冊動作ACCEPT至選擇器selector 準備監視迴圈 檢查所有發生的動作鍵值 產生該連線的SocketChannel 利用資料傳輸通道送出資料 9-4 NIO伺服器 完整程式碼與解說 9-4 NIO伺服器 01 package com.ch09; 02 03 import java.io.IOException; 04 import .InetSocketAddress; 05 import .ServerSocket; 06 import java.nio.ByteBuffer; 07 import java.nio.channels.SelectionKey; 08 import java.nio.channels.Selector; 09 import java.nio.channels.ServerSocketChannel; 10 import java.nio.channels.SocketChannel; 11 import java.util.Iterator; 12 import java.util.Set; 13 14 public class NioSimpleServer { 15 public static void main(String[] args) throws IOException { 16 ServerSocketChannel serverChannel = 17 ServerSocketChannel.open(); 18 ServerSocket ss = serverChannel.socket(); 完整程式碼與解說 9-4 NIO伺服器 19 ss.bind(new InetSocketAddress(9950)); 20 serverChannel.con?gureBlocking(false); 21 Selector selector = Selector.open(); 22 serverChannel.register(selector, SelectionKey.OP_ACCEPT); 23 while (true) { 24 selector.select(); 25 Set keys = selector.selectedKeys(); 26 Iterator it = keys.iterator(); 27 while (it.hasNext()) { 28 SelectionKey key = (SelectionKey) it.next(); 29 it.remove(); 30 if (key.isAcceptable()) { 31 System.out.println(client connected); 32 ServerSocketChannel server = 33 (ServerSocketChannel) key.channel(); 34 SocketChannel client = server.accept(); 35 client.con?gureBlocking(false); 36 Selec

文档评论(0)

youbika + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档