青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

逛奔的蝸牛

我不聰明,但我會很努力

   ::  :: 新隨筆 ::  ::  :: 管理 ::
import java.io.ByteArrayOutputStream; import java.io.IOException; import java.net.InetSocketAddress; import java.net.ServerSocket; import java.nio.ByteBuffer; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; import java.nio.channels.ServerSocketChannel; import java.nio.channels.SocketChannel; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; public class EchoServer { private static int SOCKET_NUM = 55555; private DateFormat dateFormatter = new SimpleDateFormat("yyyyMMdd HH:mm:ss"); /** * @param args */ public static void main(String[] args) { new EchoServer().start(); } public void start() { try { Selector selector = bindServer(); // 綁定服務端口,并定義一個事件選擇器對象記錄套接字通道的事件 /* 通過此循環來遍例事件 */ while (true) { log("Waiting events."); int n = selector.select(); // 查詢事件如果一個事件都沒有,這里就會阻塞 log("Got events: " + n); ByteBuffer echoBuffer = ByteBuffer.allocate(50); // 定義一個byte緩沖區來存儲收發的數據 /* 循環遍例所有產生的事件 */ for (SelectionKey key : selector.selectedKeys()) { SocketChannel sc; selector.selectedKeys().remove(key); // 將本此事件從迭帶器中刪除 /* 如果產生的事件為接受客戶端連接(當有客戶端連接服務器的時候產生) */ if ((key.readyOps() & SelectionKey.OP_ACCEPT) == SelectionKey.OP_ACCEPT) { ServerSocketChannel subssc = (ServerSocketChannel) key.channel(); // 定義一個服務器socket通道 sc = subssc.accept(); // 將臨時socket對象實例化為接收到的客戶端的socket sc.configureBlocking(false); // 將客戶端的socket設置為異步 sc.register(selector, SelectionKey.OP_READ); // 將客戶端的socket的讀取事件注冊到事件選擇器中 System.out.println("Got new client:" + sc); } /* 如果產生的事件為讀取數據(當已連接的客戶端向服務器發送數據的時候產生) */ else if ((key.readyOps() & SelectionKey.OP_READ) == SelectionKey.OP_READ) { sc = (SocketChannel) key.channel(); // 臨時socket對象實例化為產生本事件的socket ByteArrayOutputStream bos = new ByteArrayOutputStream(); // 定義一個用于存儲byte數據的流對象,存儲全部信息 echoBuffer.clear(); // 先將客戶端的數據清空 try { // 循環讀取所有客戶端數據到byte緩沖區中,當有數據的時候read函數返回數據長度 // NIO會自動的將緩沖區一次容納不下的自動分段 int readInt = 0; // 為讀取到數據的長度 while ((readInt = sc.read(echoBuffer)) > 0) { // 如果獲得數據長度比緩沖區大小小的話 if (readInt < echoBuffer.capacity()) { byte[] readByte = new byte[readInt]; // 建立一個臨時byte數組,將齊長度設為獲取的數據的長度 // 循環向此臨時數組中添加數據 for (int i = 0; i < readInt; i++) { readByte[i] = echoBuffer.get(i); } bos.write(readByte); // 將此數據存入byte流中 } // 否則就是獲得數據長度等于緩沖區大小 else { bos.write(echoBuffer.array()); // 將讀取到的數據寫入到byte流對象中 } } // 當循環結束時byte流中已經存儲了客戶端發送的所有byte數據 log("Recive msg: " + new String(bos.toByteArray())); } catch (Exception e) { e.printStackTrace(); // 當客戶端在讀取數據操作執行之前斷開連接會產生異常信息 key.cancel(); // 將本socket的事件在選擇器中刪除 break; } writeBack(sc, bos.toByteArray()); // 向客戶端寫入收到的數據 } } } } catch (Exception e) { e.printStackTrace(); } } /** * 綁定服務端口,初始化整個服務 * @throws IOException */ private Selector bindServer() throws IOException { log("Start binding server socket:" + SOCKET_NUM); Selector selector = Selector.open(); // 定義一個事件選擇器對象記錄套接字通道的事件 ServerSocketChannel ssc = ServerSocketChannel.open(); // 定義一個異步服務器socket對象 ssc.configureBlocking(false);// 將此socket對象設置為異步 ServerSocket ss = ssc.socket(); // 定義服務器socket對象-用來指定異步socket的監聽端口等信息 InetSocketAddress address = new InetSocketAddress(SOCKET_NUM); // 定義存放監聽端口的對象 ss.bind(address); // 將服務器與這個端口綁定 ssc.register(selector, SelectionKey.OP_ACCEPT); // 將異步的服務器socket對象的接受客戶端連接事件注冊到selector對象內 log("Binded socket at:" + SOCKET_NUM); return selector; } private boolean writeBack(SocketChannel sc, byte[] b) { ByteBuffer echoBuffer = ByteBuffer.allocate(b.length); // 建立這個byte對象的ByteBuffer echoBuffer.put(b); // 將數據存入 echoBuffer.flip(); // 將緩沖區復位以便于進行其他讀寫操作 try { // 向客戶端寫入數據,數據為接受到數據 sc.write(echoBuffer); } catch (IOException e) { e.printStackTrace(); return false; } System.out.println("Msg echo back: " + new String(echoBuffer.array())); return true; } private void log(Object msg) { System.out.println("SERVER [" + dateFormatter.format(new Date()) + "]: " + msg); } } @import url(http://m.shnenglu.com/cutesoft_client/cuteeditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

From: http://topic.csdn.net/u/20120719/16/a5d0c2ca-d669-4902-9f3e-d4b8f4ad90b3.html?32104
posted on 2012-07-22 07:00 逛奔的蝸牛 閱讀(875) 評論(0)  編輯 收藏 引用 所屬分類: Java
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美1级日本1级| 国产精品成人一区二区三区吃奶| 亚洲国产一区二区三区a毛片| 亚洲女ⅴideoshd黑人| 亚洲视频导航| 亚洲欧美日韩综合| 欧美亚洲网站| 久久精品一二三区| 久久久噜久噜久久综合| 欧美岛国在线观看| 亚洲精品欧美在线| 亚洲欧美日韩一区在线| 久久精品1区| 蜜臀av性久久久久蜜臀aⅴ| 欧美日韩免费一区二区三区| 国产精品亚洲网站| 亚洲精品欧美精品| 欧美一级大片在线观看| 亚洲电影免费在线观看| 亚洲欧美日韩国产中文在线| 欧美一区二区三区啪啪| 蜜臀99久久精品久久久久久软件| 亚洲精品国产精品国自产观看浪潮| 亚洲精品一区二区三区福利| 午夜欧美视频| 欧美日韩免费高清| 在线观看日韩www视频免费| 亚洲无限乱码一二三四麻| 可以免费看不卡的av网站| 99精品欧美| 欧美成人精品在线播放| 国产伦精品一区二区三区照片91| 91久久夜色精品国产九色| 欧美一区二区三区在线视频| 亚洲毛片av| 欧美激情欧美激情在线五月| 影音先锋久久| 久久xxxx| 亚洲一区在线免费| 欧美日韩日本国产亚洲在线| 亚洲国产精品黑人久久久| 久久成人资源| 一区二区三区精品| 欧美日本韩国| 亚洲精品精选| 亚洲国产精品第一区二区| 久久久久久久久久码影片| 国产精品自在在线| 午夜伦理片一区| 亚洲午夜国产一区99re久久 | 欧美韩国在线| 亚洲第一区在线| 久久一本综合频道| 欧美一区二区三区喷汁尤物| 国产欧美成人| 久久精品视频在线播放| 欧美在线视频二区| 国语自产精品视频在线看抢先版结局| 亚洲欧美区自拍先锋| 一本色道**综合亚洲精品蜜桃冫| 欧美精品一区二区三区在线播放| 亚洲欧洲视频在线| 亚洲国产日韩欧美在线动漫| 欧美成人黑人xx视频免费观看| 亚洲激情网站| 最新69国产成人精品视频免费| 欧美电影免费观看高清完整版| 亚洲久久视频| 一本久久综合亚洲鲁鲁五月天| 欧美日韩综合在线| 欧美一二三区在线观看| 久久精品二区| 亚洲激情成人| 亚洲精品小视频| 国产精品久久久| 久久精品免费| 老司机精品视频网站| 欧美大成色www永久网站婷| 麻豆91精品91久久久的内涵| 久久激情网站| 亚洲精品视频免费| 亚洲特级片在线| 国内成+人亚洲| 亚洲激情图片小说视频| 欧美日韩视频不卡| 久久九九热re6这里有精品| 久久综合久久综合这里只有精品| 亚洲裸体在线观看| 亚洲欧美在线一区二区| 亚洲国产欧美一区二区三区丁香婷| 91久久中文字幕| 国产亚洲亚洲| 亚洲精品日韩综合观看成人91| 国产美女精品人人做人人爽| 欧美二区在线看| 国产精品美女在线| 亚洲成人资源网| 国产喷白浆一区二区三区| 欧美激情一区| 国产视频观看一区| 亚洲精品美女91| 国产主播精品| 亚洲深夜激情| 亚洲日本va午夜在线影院| 午夜精品在线视频| av成人国产| 毛片av中文字幕一区二区| 午夜精品福利在线| 欧美日韩一区三区| 亚洲动漫精品| 在线观看91精品国产麻豆| 亚洲免费小视频| 亚洲视频免费在线| 女主播福利一区| 久久亚洲影音av资源网| 国产精品一级二级三级| 亚洲国产日日夜夜| 在线日韩日本国产亚洲| 欧美一区亚洲| 午夜视频在线观看一区二区| 欧美日韩视频第一区| 亚洲国产专区| 亚洲激情第一页| 久久久久久久高潮| 久久午夜电影| 国产精品区一区二区三区| 一区二区三区av| 亚洲校园激情| 欧美性色aⅴ视频一区日韩精品| 亚洲精品乱码久久久久久久久 | 欧美大片免费久久精品三p | 蜜桃av综合| 欧美阿v一级看视频| 伊人久久婷婷色综合98网| 久久国产精品久久w女人spa| 午夜在线精品偷拍| 国产精品一区毛片| 亚洲激情在线视频| 麻豆精品91| 黄网站色欧美视频| 久久精品一区二区三区中文字幕| 久久精品卡一| 亚洲大胆女人| 免费欧美电影| 亚洲美女视频在线观看| 亚洲香蕉在线观看| 国产精品一二一区| 久久久国产午夜精品| 欧美1级日本1级| 亚洲毛片av| 欧美三级小说| 久久狠狠亚洲综合| 最新亚洲视频| 欧美一区中文字幕| 在线观看国产成人av片| 欧美极品在线播放| 亚洲欧美在线一区| 欧美黄色成人网| 亚洲一卡二卡三卡四卡五卡| 国产精品入口福利| 久久精品人人做人人爽电影蜜月| 欧美成人在线免费视频| 亚洲视频播放| 亚洲电影在线看| 国产精品国产三级国产普通话三级| 欧美伊人久久久久久久久影院 | 先锋影音一区二区三区| 女女同性女同一区二区三区91| 宅男在线国产精品| 国内精品美女av在线播放| 欧美国产一区视频在线观看| 亚洲欧美在线x视频| 亚洲激情一区| 久久精品一区二区三区四区| 日韩午夜黄色| 国产在线国偷精品产拍免费yy| 欧美裸体一区二区三区| 久久成人精品电影| 一区二区精品国产| 亚洲第一精品夜夜躁人人爽 | 99精品国产一区二区青青牛奶| 国产免费观看久久黄| 欧美精品九九| 久久久久国产免费免费| 亚洲在线观看| 亚洲美女黄网| 欧美激情亚洲一区| 另类激情亚洲| 欧美在线观看一二区| 亚洲视频axxx| 在线亚洲精品| 亚洲日本va午夜在线电影| 精品999成人| 国产专区欧美精品| 国产麻豆精品theporn| 国产精品久久久久91| 欧美男人的天堂| 欧美大香线蕉线伊人久久国产精品| 久久久欧美一区二区| 久久久久久久一区二区|