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 遠帆 閱讀(243) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 哈尔滨市| 阿克苏市| 通渭县| 崇义县| 定陶县| 肥东县| 忻州市| 海口市| 拉孜县| 平乡县| 桦甸市| 安阳县| 安阳市| 莒南县| 鱼台县| 阳春市| 定陶县| 平阴县| 普陀区| 灵武市| 淅川县| 克什克腾旗| 龙南县| 广宗县| 资源县| 伊金霍洛旗| 南开区| 堆龙德庆县| 新泰市| 南昌县| 夹江县| 广丰县| 普安县| 巨鹿县| 望奎县| 开化县| 乐陵市| 汝城县| 夏邑县| 隆德县| 孟村|