posts - 12,  comments - 2,  trackbacks - 0
          1、判斷socket遠端是否已經關閉
          try{
                socket.sendUrgentData(
          0xFF);//它會往輸出流發送一個字節的數據,只要對方Socket的SO_OOBINLINE屬性沒有打開,就會自動舍棄這個字節,而SO_OOBINLINE屬性默認情況下就是關閉的
          }
          catch(Exception ex){
                reconnect();
          }

          2、上面的方法是參考網上的實現,自己又查看了一下java API才知道這根本有悖于socket程序設計的初衷。良好的實現應該是這樣的:
          try {
              
          while (true{
                  socket.receive(dataPacket);
                  
          //
              }

          }
           catch (SocketTimeoutException e) {
              
          //處理超時
          }
           catch (PortUnreachableException e) {
              
          //處理連接中斷
          }
           catch (IOException e) {
              
          //IO異常
          }
           catch (IllegalBlockingModeException e) {
              
          //socket關聯了channel,但是該channel不是非阻塞模式
          }
          posted on 2008-12-02 22:33 遠帆 閱讀(248) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 皋兰县| 台东县| 嵊泗县| 成都市| 乐清市| 县级市| 丰都县| 屏东市| 青神县| 榆林市| 珲春市| 无棣县| 临颍县| 新乡县| 华容县| 滕州市| 桂林市| 临沭县| 榆树市| 佛教| 荥经县| 海阳市| 鲜城| 涪陵区| 北宁市| 泸水县| 浮梁县| 丰原市| 禹州市| 铜川市| 霸州市| 彭阳县| 江阴市| 惠州市| 旬邑县| 苗栗县| 故城县| 灌南县| 临江市| 吉林省| 仪征市|