📄 cmppsocket.java
字号:
package com.khan.sms.socket;
import java.net.Socket;
import java.io.*;
import com.khan.sms.cmpp3.*;
import com.khan.util.*;
import com.khan.file.Log;
public class CmppSocket {
public Socket socket = null;
public boolean isConnected = false;
protected String Host = "127.0.0.1";
protected int iPort = 7890;
protected int iTimeout = 1000 * 10;
String sUser = null;
String sPass = null;
byte bVersion = 0;
static int iOriginator = 0;
protected Log log = new Log("SocketConPollLog.out");
protected Log err = new Log("SocketConPollLog.err");
public CmppSocket(String host,
int port,
int timeout,
String user,
String pass,
byte version,
int originator) {
this.Host = host;
this.iPort = port;
this.iTimeout = timeout;
this.sUser = user;
this.sPass = pass;
this.bVersion = version;
this.iOriginator = originator;
}
protected boolean login(Socket con) throws IOException {
boolean result = false;
Cmpp3Connect cc = new Cmpp3Connect(sUser, sPass, (byte) (bVersion));
cc.setSeqID(iOriginator++);
byte[] login_data = cc.encodeCmpp();
//SocketCommon.PrintDataHex(login_data); //
common.Assert("debug:" + Thread.currentThread().getName()
+ " 正在登陆,IP:" + Host + " Port:" + iPort + " User:" + sUser
+ " Pass:" + sPass + " Version:" + bVersion);
SocketCommon.Send(con, login_data); //发送登录信息
common.Assert("debug:" + Thread.currentThread().getName() + " 登陆包发送完毕!");
common.sleep(2000);
byte[] login_resp_data = SocketCommon.Receive(con); //接收信息
int command_id = SocketCommon.getDWord(login_resp_data, 4);
//SocketCommon.PrintDataHex(login_resp_data); //
if (command_id == Cmpp3Command.CMPP_CONNECT_RESP) { //判断command id
Cmpp3ConnectResp ccp = (Cmpp3ConnectResp)new Cmpp3ConnectResp(login_resp_data).decodeCmpp();
result = (ccp.bStatus == 0x00); //设定登录标志
if (result) {
common.Assert("debug:" + Thread.currentThread().getName() + " 登陆到网关!");
} else {
common.Assert("debug:" + Thread.currentThread().getName() + " 登陆失败!");
}
}
return result;
}
/**建立连接容器
* @return SocketPoolCon 返回一个连接容器*/
protected Socket createCon() {
isConnected = false;
try {
socket = new Socket(Host, iPort);
common.Assert("debug:" + Thread.currentThread().getName() + " 连接到网关!");
socket.setSoTimeout(iTimeout);
setConnect(login(socket));
} catch (Exception e) {
err.logOut("建立连接失败", e);
} finally {
if (!getConnected()) {
try {
if (socket != null) {
socket.close();
}
} catch (IOException e) {
err.logOut("关闭连接失败", e);
}
return null;
}
}
return socket;
}
/**从连接池中取得连接(线程安全函数)
* @return SocketPoolCon 返回的数据库连接容器
* */
synchronized public Socket get() {
if (getConnected()) {
return socket;
} else {
if (socket != null) {
socket = null;
}
return createCon();
}
}
synchronized public boolean getConnected() {
return isConnected;
}
synchronized public void setConnect(boolean connected) {
isConnected = connected;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -