<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 閱讀(1446) 評論(1)  編輯  收藏

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

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


    網站導航:
     
    主站蜘蛛池模板: 日本特黄特色免费大片| 亚洲一区二区三区高清不卡 | 亚洲AV综合色一区二区三区| 欧洲精品成人免费视频在线观看 | 亚洲国产成人久久一区久久| 中文字幕无码不卡免费视频 | 亚洲乱码一区av春药高潮| 亚洲国产精品无码专区在线观看| 国产福利免费观看| 免费无码精品黄AV电影| 99re免费在线视频| 在线观看免费无码专区| 国产成人精品免费视频大全| 亚洲欧美国产日韩av野草社区| 亚洲经典在线中文字幕| 亚洲AV乱码一区二区三区林ゆな| 在线日韩日本国产亚洲| www亚洲一级视频com| 国产精品美女自在线观看免费| 免费中文熟妇在线影片| 色片在线免费观看| 久久久久久曰本AV免费免费| 无码囯产精品一区二区免费| 国产精品免费AV片在线观看| 免费a级毛片无码a∨免费软件| a级毛片免费网站| 一个人免费观看日本www视频| 一级做性色a爰片久久毛片免费| 老司机午夜在线视频免费| 在线亚洲精品视频| 在线观看亚洲网站| 美女视频黄频a免费观看| 美女被免费视频网站| 中美日韩在线网免费毛片视频| 日韩毛片一区视频免费| 二级毛片免费观看全程| kk4kk免费视频毛片| 国产一级a毛一级a看免费视频| a色毛片免费视频| 日韩免费在线视频| 久久久久久精品免费看SSS|