📄 smssender.java
字号:
package com.bonc.jlcc;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.util.Collection;
import java.util.Iterator;
import java.util.Vector;
import org.apache.log4j.Logger;
import spApi.Bind;
import spApi.BindResp;
import spApi.SGIP_Command;
import spApi.Submit;
import spApi.Unbind;
public class SmsSender {
private static final Logger logger = Logger.getLogger("gate");
private Submit submit;
private final String gateHost = SmsConfig.getVaue("sms.gateway.host",
"10.42.10.3");
private final int gatePort = Integer.parseInt(SmsConfig.getVaue(
"sms.gateway.port", "8801"));
private final String gateUser = SmsConfig.getVaue("sms.gateway.user",
"JIFEI");
private final String gatePass = SmsConfig.getVaue("sms.gateway.password",
"JIFEI8");
private final int bindSequence = (int) Long.parseLong(SmsConfig.getVaue(
"sms.gateway.bind.sequence", "3043152149"));
private DataOutputStream dataOut;
private Vector<Long> ids = new Vector<Long>();
public SmsSender() {
initSubmit();
}
private void initSubmit() {
submit = new Submit((int) bindSequence);
submit.setSPNumber(SmsConfig.getVaue("sms.submit.SPNumber", "8132")); //
submit.setChargeNumber(SmsConfig.getVaue("sms.submit.chargeNumber",
"000000000000000000000")); //
submit.setCorpId(SmsConfig.getVaue("sms.submit.corpId", "52149")); //
submit.setServiceType(SmsConfig
.getVaue("sms.submit.serviceType", "SMS")); //
submit.setFeeType(Integer.parseInt(SmsConfig.getVaue(
"sms.submit.feeType", "1"))); //
submit.setFeeValue(SmsConfig.getVaue("sms.submit.feeValue", "0"));
submit.setGivenValue(SmsConfig.getVaue("sms.submit.givenValue", "0"));//
submit.setMOrelatetoMTFlag(Integer.parseInt(SmsConfig.getVaue(
"sms.submit.MOrelatetoMTFlag", "2")));
submit.setPriority(Integer.parseInt(SmsConfig.getVaue(
"sms.submit.priority", "3")));
submit
.setScheduleTime(SmsConfig.getVaue("sms.submit.scheduleTime",
""));
submit.setExpireTime(SmsConfig.getVaue("sms.submit.expireTime", ""));
}
private boolean connectToGate() {
try {
Socket sock = new Socket(gateHost, gatePort);
dataOut = new DataOutputStream(sock.getOutputStream());
DataInputStream dataIn = new DataInputStream(sock.getInputStream());
Bind bind = new Bind(bindSequence, 1, gateUser, gatePass);
int authCode = bind.write(dataOut);
if (authCode != 0) {
logger.error("Can't bind sms gateway:" + new java.util.Date());
} else {
SGIP_Command acceptCommand = new SGIP_Command().read(dataIn);
if (acceptCommand.getCommandID() == SGIP_Command.ID_SGIP_BIND_RESP /* 0x80000001 */) {
BindResp bindResp = (BindResp) acceptCommand;
bindResp.readbody();
if (bindResp.GetResult() == 0) {
logger.info("Normal connected sms gateway -> "
+ new java.util.Date());
return true;
} else {
logger.info("Cann't connect to sms gateway -> "
+ new java.util.Date());
}
}
}
} catch (IOException e) {
logger.error("When connect to gateway(IOException):" + e);
} catch (Exception e) {
logger.error("When connect to gateway(UnknowException):" + e);
}
return false;
}
public int sendMsg(Collection<SmsMessage> msgs) {
if (!connectToGate()) {
logger.error("Can not connect to sms gateway.");
return -1;
}
Iterator<SmsMessage> it = msgs.iterator();
int msgsLen = msgs.size();
int sendedCount = 0;
logger.debug("mesage count:" + msgsLen);
for (int msgLen = 0; msgLen < msgs.size(); msgLen++) {
SmsMessage smsItem = it.next();
String content = smsItem.getSendingContent();
String user = smsItem.getSendingPerson();
long id = Long.parseLong(smsItem.getMsgId());
try {
submit.setUserNumber(user);
submit.setContent(15, content);
submit.write(dataOut);
addSendedId(id);
sendedCount++;
} catch (Exception ex) {
logger.error("When sending[" + id
+ "]happened UnknowExceptin:\n" + ex);
}
}
logger.debug("=============================================");
new Unbind(bindSequence);
return sendedCount;
}
private void addSendedId(long id) {
ids.add(0, id);
}
public void delSendedId(Long id) {
if ((id != null) && ids.contains(id)) {
if (id.equals(ids.lastElement()))
ids.remove(id);
else {
ids.remove(id);
ids.trimToSize();
}
}
}
public Long getSendedId() {
if (ids.isEmpty())
return null;
return ids.lastElement();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -