⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 conncetionserveryx.java

📁 sp最新短信API(综合网关)
💻 JAVA
字号:
package com.wayout.wayoutsp.operation.packageYX;

/**
 * <p>Title: </p>
 * <p>Description: 短信互动平台</p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Company: wayoutcom</p>
 * @author dufs@wayoutcom.com
 * @version 1.0
 */
import java.util.*;
import java.io.*;
import java.net.*;
import com.wayout.wayoutsp.publics.*;

public class conncetionServerYX extends Thread {

  public conncetionServerYX() {
  }

  /**
   * 处理用户上行请求
   * @param obj
   */
  public void handleUserRequest(Object obj){
    ReceiveDataBean receive = (ReceiveDataBean)obj;
    try {
      msgContent=null;
      serviceType=null;
      srcAddr = null;
      destAddr=null;
      linkid=null;

      msgContent = receive.msgContent;
      serviceType = receive.servieceType;
      srcAddr = receive.srcAddr;
      destAddr = receive.destAddr;
      linkid= receive.linkId;
      //
      //////////////
      Socket sc = getSocketConn();
      if(sc !=null) {
        myoutputstream = sc.getOutputStream();
        myinputstream = sc.getInputStream();
        ByteArrayOutputStream byteArrayOutStream = new ByteArrayOutputStream();
        DataOutputStream dataOutStream = new DataOutputStream(byteArrayOutStream);
        getDeliver(dataOutStream);
        byte[] bb = byteArrayOutStream.toByteArray();
        myoutputstream.write(bb);
        myoutputstream.flush();

        //关闭流
        myoutputstream.close();
        myinputstream.close();
        sc.close();
      }
      PublicConstants.writeLog.info("send message to 134.159.120.43 ok!!");
      PublicConstants.writeLog.info("destAddr=="+destAddr);
      PublicConstants.writeLog.info("srcAddr=="+srcAddr);
      PublicConstants.writeLog.info("serviceType=="+serviceType);
      PublicConstants.writeLog.info("msgContent=="+msgContent);
      PublicConstants.writeLog.info("linkid=="+linkid);

    }
    catch (Exception ex) {
      //ex.printStackTrace();
      PublicConstants.writeLog .error("public void handleUserRequest(Object obj)::: "+ex.toString() );
    }

  }

  /**
   * 主函数
   */
  public void run() {
    while (! myShutdownFlag) {
      try{
        while( handleVector.isEmpty() ){
          synchronized ( _lock ){
            try{
              _lock.wait() ;
              }catch (Exception e){}
          }
        }
        if( handleVector.size()> 0 ){
          handleUserRequest(handleVector.get(0));
          handleVector.removeElementAt(0);
        }
      } catch (Exception ee) {
        PublicConstants.writeLog .error("Cmpp handle error: "+ee.toString() );
      }
    } // end while
  }

   /**
    *
    * @param obj
    * @return
    */
   public boolean addBusi(Object obj) {
     try {
       handleVector.add(obj);
       synchronized (_lock) {
         _lock.notify();
       }
       return true;
     }
     catch (Exception e) {
       System.out.println("HandleThread addBusi:" + e.toString());
       return false;
     }
   }

   /**
    * 得到一个Socket连接
    * @return
    */
   private Socket getSocketConn() {
     String HostIp = null;
     int PortNum = 1122;
     if (Clients != null) {
       return Clients;
     }
     else {

       try {
         HostIp = clientIp;
         try {
           PortNum = serverPort;
         }
         catch (NumberFormatException e) {
           PortNum = 1122;
           System.out.println("服务端端口错误!");
         }

         if (HostIp == null || HostIp.trim().length() == 0) {
           System.out.println("远端服务器IP地址参数没找到!");
           return null;
         }
         Clients = new Socket(HostIp, PortNum);

         return Clients;
       }
       catch (Exception e) {
         System.out.println("连接远端通信服务器" + HostIp.toString() + "失败,原因是  " +
                            e.getClass());
         return null;
       }
     }
   }

   /**
    * 打包
    * @param dataOutStream
    * @return
    */
   private  boolean getDeliver(DataOutputStream dataOutStream) {
       byte[] contentBytes;
       try {
         contentBytes=msgContent.getBytes("gb2312") ;
       } catch(Exception e) {
           contentBytes=msgContent.getBytes();
           System.out.println("unsupportedEncoding Exception :"+e) ;
       }
       try {
           /**
            * test group send
            */

           totalSize=2+2+4
               +srcAddr.length()+1
//               +dbname_glob.length()+1
               +destAddr.length()+1
               +linkid.length()+1
               +contentBytes.length+1;
           //System.out.println("totalSize===="+totalSize);
           dataOutStream.writeShort(totalSize);
           dataOutStream.writeShort(Cmpp_Deliver);
           dataOutStream.writeInt(getSeqNo());
           writeString(dataOutStream,srcAddr);
           writeString(dataOutStream,destAddr);
           writeString(dataOutStream,linkid);
           dataOutStream.write(contentBytes);
           dataOutStream.writeByte('\0');

           //writeString(dataOutStream,msgContent);

       } catch(Exception e) {
           System.out.println("private  boolean getSubmit(DataOutputStream dataOutStream):="+e.toString());
           return false;
       }
       return true;
   }


 /**
  * 写数据流
  * @param dataOutStream
  * @param str
  * @return
  */
 private  static boolean writeString(DataOutputStream dataOutStream,String str) {
     try {
         dataOutStream.writeBytes(str) ;
         dataOutStream.writeByte('\0');
     } catch(IOException e) {
         return false;
     }
     return true;
}

 /**
  * 写数据流
  * @param outStream
  * @param str
  * @param StrLen
  * @return
  */
 private static boolean writeString(DataOutputStream outStream,String str,int StrLen){
   int i;
   try{
       if(str!=null){
       outStream.writeBytes(str) ;
       for (i=1;i<=StrLen-str.length ();i++){
           outStream.writeByte('\0');
       }
       }
       else{
         for (i=1;i<=StrLen;i++){
           outStream.writeByte('\0');
         }
       }
   }
   catch(IOException e){
       return false;
   }
   return true;
}
  public static int fmo_number;
 public synchronized static int getSeqNo(){
 int temp_SeqNo=fmo_number++;
 if (fmo_number>=2140000000)
   fmo_number=1;
 return temp_SeqNo;
}



   private static Socket Clients;
   private InputStream myinputstream;
   private OutputStream myoutputstream;
   public DataInputStream dataInStream;
   public DataOutputStream dataOutStream;
   static final int serverPort=1122; //服务端端口
   static final String clientIp= "134.159.120.43"; //服务端端口
   private ServerSocket mysvrsock;         //本地服务socket
   private boolean myShutdownFlag = false; //管理器关闭标志
   public  static Thread  svrCmppThread;   //服务线程
   private Vector handleVector = new Vector(10000,100);
   private Object _lock = new Object();

   private String msgContent = null;
   private int totalSize;
   private String destAddr = null;
   private String srcAddr = null;
   private int registeredDelivery = 1;
   private String serviceType = null;
   private String linkid = null;
   static final short Cmpp_Deliver=	 0x0081;	    //下发请求

}







⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -