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

📄 devicesmsservice.java

📁 用java写编写的一个GPS源代码请大家多多指教
💻 JAVA
字号:
package com.gps.center.dataservice;
import java.lang.*;
import java.io.File;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import com.gps.center.baseclass.ParseData;
import java.util.Timer;
import java.io.*;
import com.gps.center.baseclass.MsgObj;
import java.util.TimerTask;
import com.gps.center.dataservice.SMSClient;

/*短信监听类,创建一个调用TimerTask类,延时为smssecond*1000毫秒
 *作用如下:
 *读取XML文件的IP和端口,调用SMSClient的OpenSMS方法创建Socket与短信猫通信
 *在创建成功后调用ReadSMS按行读取短信内容,添加到接收队列
 */
public class DeviceSmsService  extends ParseData  implements Runnable {

  private String SmsIp;//短信服务器IP
  private int SmsPort;
  private SMSClient SMSObj = new SMSClient();
  public MsgObj msgobj;
  private static boolean isRunning = false;
  private final Timer smstimer = new Timer();
  private final int smssecond = 10;

  public DeviceSmsService() {
      readxml();
  }

  public void run() {
      timerStar();
  }

  public void timerStar() {
//    boolean isRunning = false;
    smstimer.schedule(new TimerTask() {//新任务TimerTask类继承Runnable
      public void run() {
        if (!isRunning) {
          SmsTask();
        }
      }
      private void SmsTask() {
        if (SMSObj.OpenSMS(SmsIp, SmsPort)) {
          isRunning = true;
          while (!SMSObj.ReadSMS().equalsIgnoreCase("0")) {
            try {
              String recivemsg = new String( (SMSObj.Content + "\r\n").getBytes("8859_1")).trim();
              if (recivemsg.length() > 2) {
                msgobj = new MsgObj();
                //cMsgtype:1--TCPMSG,2--DEVICEUDPMSG,3--SMSMSG
                //4--TCPSENDTODEVICE,5--UDPSENDTODEVICE,6--SMSSENDTODEVICE,7--TCPSENDTOTERMINAL,8--TCPRETURNTERMINAL
                msgobj.cMsgType = SMSMSG;
                msgobj.cMsg = recivemsg;
                msgobj.cPhoneNum = SMSObj.Mobile;
                addRecieveMsg(msgobj);
              }
            }
            catch (UnsupportedEncodingException ex) {
              isRunning = false;
              SMSObj.CloseSMS();
            }
          }
          isRunning = false;
          SMSObj.CloseSMS();
        }
        else {
          isRunning = false;
          System.out.println("OpenSMS err 打开短信错误");
        }
      }
    }
    , 0, smssecond * 1000);
  }

  private void readxml() {
      String strPort, strIp;
      try {
          //文件关联
          File f = new File("CenterInfo.xml");
          if (f.exists()) {
              DocumentBuilderFactory factory = DocumentBuilderFactory.
                                               newInstance();
              DocumentBuilder builder = factory.newDocumentBuilder();
              Document doc = builder.parse(f);
              NodeList nl = doc.getElementsByTagName("Center");
              for (int i = 0; i < nl.getLength(); i++) {
                  strPort = (doc.getElementsByTagName("SmsPort").item(i).
                             getFirstChild().
                             getNodeValue()).trim();
                  strIp = (doc.getElementsByTagName("SmsIp").item(i).
                           getFirstChild().
                           getNodeValue()).trim();
                  try {
                      if (strPort.length() > 0) {
                          SmsPort = Integer.parseInt(strPort);
                      } else {
                          System.out.println("SmsPort err");
                          System.exit( -1);
                      }
                      if (strIp.length() > 0) {
                          SmsIp = strIp;
                      } else {
                          System.out.println("SmsIp err");
                          System.exit( -1);
                      }
                  } catch (Exception e) {
                      System.out.println("centerPort and MaxConnection err");
                  }
              }
          } else {
              System.out.println("no find file:CenterInfo.xml");
              System.exit( -1);
          }

      } catch (Exception e) {
          e.printStackTrace();
          System.exit( -1);
      }
  }
}

⌨️ 快捷键说明

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