亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? socketlogic.java

?? 電信小靈通短信網關通訊協議SMGP的JAVA語言API開發包源代碼
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/************************************************************************************
 *
 * 與服務器唯一的發送接口,采用獨占式發送,不自動連接;有active_test判斷斷線并連接
 *
 */
package com.ut.smgp.api.logic;

import com.ut.smgp.api.structure.*;
import com.ut.smgp.api.configure.*;
import com.ut.smgp.api.function.*;
import java.io.*;
import java.net.*;
import java.util.*;


public  class socketLogic {

  private function fun=new function();
  private int error_code=0;
  private initStruct currentInit=new initStruct();  //保存當前建立連接使用的配置

  public socketLogic() {
  }
  /**********************************************************************
  *
  *退出
  * @param SMGPHeadStruct  包頭
  *  @return int 0:成功 1:失敗
  *
  */
   public int exit(socketStruct socket,int timeout,deliverVector deliverQueue,int type)
      {
         DataInputStream dataRec;
         DataOutputStream dataSend;
         SMGPHeadStruct head=new SMGPHeadStruct();
         head.packageSize=12;
         head.requestId=6;
         int errorCode=0;
         byte[] body=new byte[0];
         synchronized(socket)
         {
           try {
               int startTime=(int)(System.currentTimeMillis()/1000L);
               head.sequenceId = socket.seq++;
               if(socket.seq == 0x7fffffff)
                 socket.seq = 1;
               socket.socket.setSoTimeout(timeout); //設置超時時間
               dataRec = new DataInputStream(socket.socket.getInputStream());
               dataSend = new DataOutputStream(socket.socket.getOutputStream());
               if(send(head,body,dataSend)!=0)
                {
                  return configure.ERROR_SEND_FAILED;
                }
               for (; ; ) { //接收response
                 if((int)(System.currentTimeMillis()/1000L)-startTime>timeout)
                 {//超時
                  break;
                 }
                 Hashtable hash = receive(socket);
                 if(hash==null) {
                    errorCode=configure.ERROR_RECEIVE_FAILED;
                    break;
                 }
                 if ( ( (String) hash.get("result")).equals("ok"))
                 { //接收成功
                   SMGPHeadStruct h = (SMGPHeadStruct) hash.get("head");
                   if (h.sequenceId == head.sequenceId&&h.requestId==head.requestId+0x80000000){
                       return 0;  //發送成功
                   }
                   else //不是要接收的response,繼續接收
                     dealDeliver(socket,hash,deliverQueue,type);  //若是deliver數據,則保存入deliver接收隊列并返回response
                     continue;
                 }
                 else
                 {//接收失敗
                   errorCode=configure.ERROR_SEND_FAILED;
                   break;
                 }
             }
           }
          catch (IOException ioexception) {
               System.err.println("socketLogic.exit Failed I/O: " + ioexception);
            return configure.ERROR_SEND_FAILED;
          }
          catch (Exception ioexception) {
                //System.err.println("socketLogic.exit1 Exception: " + ioexception);
                return configure.ERROR_RECEIVE_FAILED;
          }

         }
         return errorCode;
      }


  /**********************************************************************
  *
  *發送active數據包
  * @param SMGPHeadStruct  包頭
  *  @return int 0:成功 1:失敗
  *
  */
   public int activeTest(socketStruct socket,int retryTimes,int timeout,deliverVector deliverQueue,int type)
      {
         DataInputStream dataRec;
         DataOutputStream dataSend;
         SMGPHeadStruct head=new SMGPHeadStruct();
         head.packageSize=12;
         head.requestId=4;
         int errorCode=0;
         byte[] body=new byte[0];
         synchronized(socket)
         {
           try {
             for(int j=0;j<retryTimes;j++)
             {//retry
               int startTime=(int)(System.currentTimeMillis()/1000L);
               head.sequenceId = socket.seq++;
               if(socket.seq == 0x7fffffff)
                 socket.seq = 1;
               socket.socket.setSoTimeout(timeout); //設置超時時間
               dataRec = new DataInputStream(socket.socket.getInputStream());
               dataSend = new DataOutputStream(socket.socket.getOutputStream());
               if(send(head,body,dataSend)!=0)
                {
                  errorCode=configure.ERROR_SEND_FAILED;
                  continue;
                }
               for (; ; ) { //接收response
                 if((int)(System.currentTimeMillis()/1000L)-startTime>timeout)
               {//超時
                  break;
               }
                 Hashtable hash = receive(socket);
                 if(hash==null) {
                 errorCode=configure.ERROR_RECEIVE_FAILED;
                   break;
               }
                 if ( ( (String) hash.get("result")).equals("ok"))
                 { //接收成功
                   SMGPHeadStruct h = (SMGPHeadStruct) hash.get("head");
                   if (h.sequenceId == head.sequenceId&&h.requestId==head.requestId+0x80000000){
                       return 0;  //發送成功
                   }
                   else //不是要接收的response,繼續接收
                     dealDeliver(socket,hash,deliverQueue,type);  //若是deliver數據,則保存入deliver接收隊列并返回response
                     continue;
                 }
                 else
                 {//接收失敗
                   errorCode=configure.ERROR_SEND_FAILED;
                   break;
                 }
               }
             }
           }
          catch (IOException ioexception) {
            System.err.println("socketLogic.activeTest Failed I/O: " + ioexception);
            return configure.ERROR_SEND_FAILED;
          }
          catch (Exception ioexception) {
                System.err.println("socketLogic.activeTest Exception: " + ioexception);
                return configure.ERROR_RECEIVE_FAILED;
          }

         }
         return errorCode;
      }

/**********************************************************************
*
*發送SMGP數據包
* @param SMGPHeadStruct  包頭
*  @return int 0:成功 1:失敗
*
*/
 public int submit(SMGPHeadStruct head, byte body[],socketStruct socket,int retryTimes,int timeout,deliverVector deliverQueue,byte[] msgId,int type)
    {
       DataInputStream dataRec;
       DataOutputStream dataSend;
       int errorCode=0;
       synchronized(socket)
       {
         try {
           for(int j=0;j<retryTimes;j++)
           {//retry
             head.sequenceId = socket.seq++;
             long startTime=System.currentTimeMillis();
             if(socket.seq == 0x7fffffff)
               socket.seq = 1;
             socket.socket.setSoTimeout(timeout); //設置超時時間
             dataRec = new DataInputStream(socket.socket.getInputStream());
             dataSend = new DataOutputStream(socket.socket.getOutputStream());
             int sendResult=send(head,body,dataSend);
             if(sendResult!=0)
              {
                errorCode=sendResult;
                continue;
              }

             for (; ; ) { //接收response
               if(System.currentTimeMillis()-startTime>timeout)
               {//超時
                  break;
               }
               Hashtable hash = receive(socket);
               if(hash==null) {
                 errorCode=configure.ERROR_RECEIVE_FAILED;
                   break;
               }
               if ( ( (String) hash.get("result")).equals("ok"))
               { //接收成功
                 SMGPHeadStruct h = (SMGPHeadStruct) hash.get("head");
                 if (h.sequenceId == head.sequenceId&&h.requestId==head.requestId+0x80000000){
                   byte[] dat=(byte[])hash.get("body");
                  //int result=fun.byte2Int(dat,10,1);
                   int result=fun.byte2Int(dat,10,4);
                   if(result==0)
                   {
                    // byte[] temp=new byte[10];
                     System.arraycopy(dat,0,msgId,0,10);
                    // msgId=new String(temp);
                     return 0; //發送成功
                   }
                   else
                   {//發送失敗
                     errorCode=result;
                     break;
                   }
                 }
                 else //不是要接收的response,繼續接收
                 {
                   dealDeliver(socket,hash,deliverQueue,type);  //若是deliver數據,則保存入deliver接收隊列并返回response
                   continue;
                 }
               }
               else
               {//接收失敗
                 errorCode=configure.ERROR_SEND_FAILED;
                 break;
               }
             }
           }
         }
        catch (IOException ioexception) {
          System.err.println("socketLogic.submit Failed I/O: " + ioexception);
          return configure.ERROR_SEND_FAILED;
        }
       }
       return errorCode;
    }

    /*****************************************************
     * 群發
     *
     */
    public void submitMulti(SubmitMultiStruct[] multi, socketStruct socket,
                          int retryTimes, int timeout,
                          deliverVector deliverQueue, int type) {
    DataInputStream dataRec;
    DataOutputStream dataSend;
    int errorCode = 0;
    boolean isOk = true;
    synchronized (socket) {
      try {
        //int test = 0;
        long startTime = System.currentTimeMillis(); //發送開始時間
        socket.socket.setSoTimeout(timeout); //設置超時時間
        dataRec = new DataInputStream(socket.socket.getInputStream());
        dataSend = new DataOutputStream(socket.socket.getOutputStream());
        for (int j = 0; j < retryTimes + 1; j++) { //重發
          for (int i = 0; i < multi.length; i++) {
            if (multi[i].result != -1 && multi[i].result != 0) { //未發送或發送失敗
              if (multi[i].result == -2) { //未發送
                multi[i].head.sequenceId = socket.seq++;
                if (socket.seq == 0x7fffffff) {
                  socket.seq = 1;
                }
              }
              int sendResult = send(multi[i].head, multi[i].body, dataSend);
              //System.out.println(test++);
              if (sendResult == 0) {
                multi[i].result = -1;
              }
            }
          }
          for (; ; ) { //接收response
            if (System.currentTimeMillis() - startTime > timeout) { //超時
              break;
            }

            Hashtable hash = receive(socket);
            if (hash == null) {
              errorCode = configure.ERROR_RECEIVE_FAILED;
              break;
            }
            if ( ( (String) hash.get("result")).equals("ok")) { //接收成功
              SMGPHeadStruct h = (SMGPHeadStruct) hash.get("head");
              boolean bln = false;
              for (int k = 0; k < multi.length; k++) {
                if (h.sequenceId == multi[k].head.sequenceId &&
                    h.requestId == multi[k].head.requestId + 0x80000000) {
                  bln = true;
                  byte[] dat = (byte[]) hash.get("body");
                  int result =fun.byte2Int(dat,10,4);;
                  if (result == 0) {
                    System.arraycopy(dat, 0, multi[k].msgId, 0, 10);
                   // System.arraycopy(dat, 10, multi[k].congestionState, 0, 5);
                    multi[k].result = 0; //發送成功****************
                  }
                  else { //發送失敗
                    errorCode = result;
                    multi[k].result = result;
                    break;
                  }
                }
              }
              if (!bln) { //不是要接收的response,繼續接收
                dealDeliver(socket, hash, deliverQueue, type); //若是deliver數據,則保存入deliver接收隊列并返回response
                continue;

              }
            }
            else { //接收失敗
              errorCode = configure.ERROR_SEND_FAILED;
              break;
            }

            //重發控制
            boolean blnRetry = false;
            boolean blnSendAll = true;
            for (int k = 0; k < multi.length; k++) {
              if (multi[k].result == -1) {
                blnSendAll = false;
              }
              if (multi[k].result != 0 && multi[k].result != -1 &&
                  j < retryTimes) {
              //  System.out.println("break");
                blnRetry = true;
                // break; //發送失敗,且重發次數未滿,則重發
              }
            }
            if (blnRetry & blnSendAll) { //已接收全部的狀態報告后再判斷是否重發
              break;
            }

            //處理結果檢驗
            isOk = true;
            for (int k = 0; k < multi.length; k++) {
              if (multi[k].result != 0) {
                isOk = false;
              }
            }
            if (isOk) {
              break; //全部處理成功,退出
            }
          }
          if (isOk) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲色图欧洲色图| 成人美女视频在线观看18| 国产伦精品一区二区三区在线观看| 国产精品一二三| 欧美在线视频不卡| 国产精品免费av| 成人激情av网| 日韩精品最新网址| 一级做a爱片久久| 成人激情综合网站| 精品av久久707| 日韩国产在线一| 色婷婷综合久久久久中文一区二区 | 波多野结衣一区二区三区| 欧美嫩在线观看| 一区二区国产视频| voyeur盗摄精品| 国产亚洲精久久久久久| 天天操天天干天天综合网| 91免费观看在线| 国产视频一区在线播放| 婷婷六月综合网| 欧美日韩视频在线第一区| 亚洲欧美日韩在线播放| 成人免费视频免费观看| 久久久久久97三级| 国产在线不卡一卡二卡三卡四卡| 欧美日韩精品一二三区| 亚洲精品欧美激情| 色丁香久综合在线久综合在线观看| 中文字幕欧美三区| 国产99一区视频免费| 欧美tk丨vk视频| 国产一区二区影院| 久久先锋影音av| 国产精品小仙女| 欧美激情在线看| 91一区一区三区| 亚洲一区免费观看| 欧美一区二区三区四区视频| 精品国产一区二区三区av性色| 不卡电影免费在线播放一区| 91在线视频官网| 亚洲精品成人在线| 欧美亚洲国产bt| 天堂影院一区二区| 日韩欧美二区三区| 国产成人精品影院| 国产精品美女久久久久高潮| a级精品国产片在线观看| 亚洲人一二三区| 在线成人免费视频| 国内精品伊人久久久久av一坑| 久久精品视频在线免费观看| 成人激情校园春色| 亚洲不卡一区二区三区| 日韩丝袜美女视频| 91精品国产品国语在线不卡| 人人精品人人爱| 国产三级精品视频| 91久久精品国产91性色tv| 午夜免费欧美电影| 国产亚洲1区2区3区| 色婷婷精品大在线视频| 美女视频网站黄色亚洲| 国产精品电影一区二区三区| 欧美日韩一区小说| 国产99久久久国产精品潘金网站| 亚洲色图.com| 精品成人一区二区三区| 91丨九色丨国产丨porny| 日日欢夜夜爽一区| 国产视频一区二区在线| 欧美日韩在线直播| 成人少妇影院yyyy| 日本va欧美va欧美va精品| 欧美国产日韩一二三区| 欧美日韩精品一区二区天天拍小说 | 国产精品一色哟哟哟| 一个色综合网站| 国产无人区一区二区三区| 欧美视频一区二区在线观看| 国产精品一级黄| 午夜精品免费在线观看| 国产精品女主播av| xnxx国产精品| 欧美一区二区三区在线电影| 波多野结衣中文字幕一区二区三区 | 26uuu色噜噜精品一区| 欧美性色综合网| 9l国产精品久久久久麻豆| 六月婷婷色综合| 亚洲高清久久久| 国产大片一区二区| 男男gaygay亚洲| 午夜欧美在线一二页| 亚洲欧美日韩人成在线播放| 久久久久久久电影| 精品久久五月天| 91精品国产综合久久福利软件| 99在线精品免费| 成人亚洲一区二区一| 韩国成人福利片在线播放| 午夜精品福利一区二区蜜股av| 《视频一区视频二区| 久久免费美女视频| 精品国产99国产精品| 日韩一区二区电影网| 3d动漫精品啪啪1区2区免费| 在线影院国内精品| 欧美中文字幕亚洲一区二区va在线 | 精品一区二区三区视频| 婷婷久久综合九色综合绿巨人| 伊人开心综合网| 亚洲精品国产成人久久av盗摄| 中文字幕一区视频| 自拍av一区二区三区| 亚洲私人黄色宅男| 亚洲另类色综合网站| 亚洲精品国产成人久久av盗摄 | 99久久国产综合精品女不卡| 国内精品国产三级国产a久久| 麻豆免费精品视频| 国内精品久久久久影院色| 国产精品一卡二卡在线观看| 国产成人精品亚洲午夜麻豆| 成人国产亚洲欧美成人综合网| 成人性生交大片免费| 成人精品一区二区三区四区| 91丨九色丨尤物| 欧美理论片在线| 精品国产一二三| 国产精品色婷婷久久58| 亚洲欧美日韩国产手机在线 | 91精品欧美久久久久久动漫| 91精品免费观看| 国产亚洲人成网站| 亚洲欧美激情一区二区| 一区二区三区高清在线| 日本三级韩国三级欧美三级| 国产在线播放一区三区四| 成人av网站在线| 欧美最新大片在线看| 日韩欧美自拍偷拍| 国产精品免费视频观看| 亚洲成人av电影在线| 久久超碰97中文字幕| 99久久夜色精品国产网站| 欧美日韩性生活| 国产欧美久久久精品影院| 亚洲一区中文在线| 狠狠色丁香婷综合久久| 91污在线观看| 欧美大片在线观看一区二区| 国产精品久久久久久久久久久免费看| 亚洲激情图片一区| 久久99精品久久久久久久久久久久| 国产成人av福利| 欧美精品tushy高清| 欧美国产激情二区三区| 午夜国产不卡在线观看视频| 风间由美一区二区av101| 欧美日韩在线播| 亚洲日本在线视频观看| 国内不卡的二区三区中文字幕 | 午夜精品久久久久久久久久| 国产一区二区在线视频| 精品视频在线看| 中文字幕亚洲一区二区va在线| 日韩精品一二区| 91麻豆精品在线观看| 久久精品亚洲一区二区三区浴池 | 一区二区三区中文在线观看| 国产一区二区免费在线| 欧美日韩国产高清一区| 国产精品乱人伦中文| 久久国产精品72免费观看| 欧美日韩视频在线一区二区| 中文字幕一区av| 成人精品视频一区二区三区| 精品理论电影在线观看| 日韩精品一区第一页| 欧美日韩一区二区三区在线看| 亚洲视频免费在线观看| 成人国产精品免费| 久久久www成人免费无遮挡大片 | 亚洲成人资源网| 91丨porny丨户外露出| 国产精品欧美久久久久无广告 | 中文字幕va一区二区三区| 精品制服美女久久| 欧美一区二区三区小说| 亚洲777理论| 欧美自拍丝袜亚洲| 一区二区在线观看视频在线观看| 成人一区在线看| 中文字幕中文在线不卡住| 国产91精品一区二区| 国产日本一区二区| 国产精品一区2区|