<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-159  評論-114  文章-7  trackbacks-0

    服務器往外發數據包,不是光一個socketChannel.write(bb); 就完事了


    那是理想狀態。。

    用我方法才能保證發出,即使客戶端連接很濫

    public static long flushChannel(SocketChannel socketChannel,ByteBuffer bb, long writeTimeout) throws IOException
     
    {

         SelectionKey key 
    = null;
         Selector writeSelector 
    = null;
         
    int attempts = 0;
         
    int bytesProduced = 0;
         
    try {
             
    while (bb.hasRemaining()) {
                 
    int len = socketChannel.write(bb);
                 attempts
    ++;
                 
    if (len < 0){
                     
    throw new EOFException();
                 }
     
                 bytesProduced 
    += len;
                 
    if (len == 0{
                     
    if (writeSelector == null){
                         writeSelector 
    = Selector.open();
                         
    if (writeSelector == null){
                             
    // Continue using the main one
                             continue;
                         }
     
                     }


                     key 
    = socketChannel.register(writeSelector, key.OP_WRITE);

                     
    if (writeSelector.select(writeTimeout) == 0{

                         
    if (attempts > 2)

                             
    throw new IOException("Client disconnected");

                     }
     else {

                         attempts
    --;

                     }


                 }
     else {

                     attempts 
    = 0;

                 }


             }


         }
     finally {

             
    if (key != null{

                 key.cancel();

                 key 
    = null;

             }


             
    if (writeSelector != null{

                 
    // Cancel the key.

                 writeSelector.selectNow();

                 writeSelector.close();

             }


         }


         
    return bytesProduced;

     }
      


    posted on 2008-11-19 12:08 北國狼人的BloG 閱讀(1450) 評論(1)  編輯  收藏

    評論:
    # re: 用戶NIO寫服務器,必須多加處理OP_WRITE,不會丟包 2010-11-09 16:14 | raymond
    好用,頂一個!  回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲色成人四虎在线观看| 国产黄色片免费看| 亚洲最大福利视频| 曰批免费视频播放免费| 国产精品免费无遮挡无码永久视频| 野花高清在线电影观看免费视频| 亚洲日韩在线观看免费视频| 亚洲国色天香视频| gogo免费在线观看| 亚洲男人的天堂在线va拉文| 亚洲av一本岛在线播放| 99久久99这里只有免费的精品| 午夜精品在线免费观看| 亚洲电影中文字幕| 精品久久久久久无码免费| 成人免费淫片在线费观看| 亚洲激情在线视频| 国产精品永久免费| 国产亚洲午夜高清国产拍精品 | 亚洲精品无码国产片| 久久精品国产大片免费观看| 久久亚洲私人国产精品vA| 男女拍拍拍免费视频网站| 国产亚洲综合成人91精品| 午夜免费国产体验区免费的| 在线免费观看毛片网站| 美女视频黄a视频全免费网站一区| 美女视频黄的全免费视频网站| 久久久久久亚洲精品| 99久久精品日本一区二区免费| 久久亚洲AV无码精品色午夜麻豆| 在线看片免费人成视频久网下载 | 无码精品A∨在线观看免费| 亚洲精品美女久久7777777| 国产福利视精品永久免费| 亚洲老熟女五十路老熟女bbw| 亚洲精品国产电影| 亚洲精品免费在线| 久久精品国产亚洲AV无码麻豆 | 亚洲精品动漫人成3d在线| 99精品视频在线视频免费观看|