国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

關于用JAVA開發短信方面的知識

2019-11-18 11:05:31
字體:
來源:轉載
供稿:網友

 



首先,你要選擇一臺移動或者聯通的短信服務器做你們的發送短信接口.這是最要害的一步,也是最底層的,當然這是需要mUCh money的,呵呵.沒辦法!現實了點....

然后你就是在連接接口的服務器做技術了.用java 的 SOCKET 來監聽客戶端的SOCKET,當然這是需要一定的難度,和普通是有很多的區別,例如每秒鐘可以同時接受3000條SOCKET... ...,要進行客戶端的認證.要進行數據流轉輸的加密... ...

最后就是來處理客戶端的發送SOCKET了,其實他們傳輸都是字節Byte...

public class Client
{
//構造函數
public Client()
{
connectStatus = false;
loginStatus = false;
default_ip = "";
default_port = 0;
default_user = "";
default_passWord = "";
connection = null;
input = null;
out = null;
binput = null;
}
//連接函數

public boolean connect(String ip, int port)
{
boolean result = false;
if(ip == null ip.indexOf(".") < 1)
ip = default_ip;
if(port < 1)
port = default_port;
try
{
connection = new Socket(ip, port);
input = connection.getInputStream();
binput = new BufferedInputStream(input);
out = connection.getOutputStream();
result = true;
connectStatus = true;
default_ip = ip;
default_port = port;
}
catch(Exception e)
{
result = false;
}
return result;
}

//登錄函數

public int login(String userName, String password)
{
int loginRes = -1;
if(!connectStatus)
return 1;
if(userName == null userName.trim().equals(""))
return 24;
byte loginData[] = new byte[43];
setIntData(43, loginData, 0);
setIntData(1, loginData, 4);
setIntData(1, loginData, 8);
userName.getBytes(0, userName.length(), loginData, 12);
password.getBytes(0, password.length(), loginData, 22);
loginData[38] = 1;
setTime((new Date()).getTime() / (long)1000, loginData, 39);
try
{
out.write(loginData);
out.flush();
byte rec[] = new byte[30];
char ret = '/0';
int i = 0;
do
{
if(i >= 400)
break;
if(binput.available() > 0)
{
input.read(rec, 0, 30);
ret = (char)rec[12];
break;
}
Thread.sleep(50L);
i++;
} while(true);
if(ret == 'T')
{
loginStatus = true;
default_user = userName;
default_password = password;
int k = 0;
return k;
}
loginRes = 1;
}
catch(Exception e)
{
int j = 1;
return j;
}
return loginRes;
}

//發送函數

public int submit(String servicer_id, int msg_type, int status_report, String src_addr, String

dest_addr, String schedule, String eXPire,
int msg_fmt, byte msg_content[], String fee_type, String fee_code, String fee_mobile,

String fee_by, int pid)
{
int subRes = -1;
if(!connectStatus !loginStatus)
return 1;
byte submitData[] = new byte[264];
setIntData(264, submitData, 0);
setIntData(4, submitData, 4);
setIntData(1, submitData, 8);
servicer_id.getBytes(0, servicer_id.length(), submitData, 12);
submitData[22] = (byte)msg_type;
submitData[23] = (byte)status_report;
if(src_addr == null src_addr.trim().length() < 1)
return 14;
src_addr.getBytes(0, src_addr.length(), submitData, 24);
if(dest_addr == null dest_addr.trim().length() < 1)
return 15;
dest_addr.getBytes(0, dest_addr.length(), submitData, 45);
if(schedule != null && schedule.trim().length() > 1 && !setTime(schedule, submitData,

66))
return 16;
if(expire != null && expire.trim().length() > 1 && !setTime(expire, submitData, 70))
return 17;
submitData[74] = (byte)msg_fmt;
submitData[75] = (byte)msg_content.length;
System.arraycopy(msg_content, 0, submitData, 76, msg_content.length);
fee_type.getBytes(0, fee_type.length(), submitData, 236);
fee_code.getBytes(0, fee_code.length(), submitData, 244);
if(fee_mobile != null && fee_mobile.trim().length() > 11)
fee_mobile = fee_mobile.substring(2);
fee_mobile.getBytes(0, fee_mobile.length(), submitData, 250);
fee_by.getBytes(0, 2, submitData, 261);
if(pid < 0 pid > 256)
pid = 0;
submitData[263] = (byte)pid;
boolean reSend = false;
try
{
out.write(submitData);
out.flush();
}
catch(Exception e)
{
reSend = true;
}
if(reSend)
{
int sendTimes = 0;
do
{
if(sendTimes >= 2)
break;
try
{
connect(default_ip, default_port);
login(default_user, default_password);
out.write(submitData);
out.flush();
reSend = false;
break;
}
catch(Exception exception)
{
sendTimes++;
}
} while(true);
}
if(reSend)
{
connectStatus = false;
loginStatus = false;
return 1;
}
try
{
byte sub[] = new byte[17];
char sRet = '/0';
int i = 0;
do
{
if(i >= 1500)
break;
if(binput.available() > 0)
{
input.read(sub, 0, 17);
sRet = (char)sub[16];
break;
}
Thread.sleep(10L);
i++;
} while(true);
if(sRet == 'T')
subRes = 0;
else
subRes = 11;
}
catch(Exception e)
{
subRes = 1;
}
return subRes;
}


當然要根據不同的參數來判定不同的錯誤和正確的發送.就談這么多了,假如大家有什么不明的,可以和我聯系.



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 会理县| 乐安县| 双鸭山市| 郓城县| 库伦旗| 德钦县| 屏南县| 土默特右旗| 凤凰县| 开鲁县| 昂仁县| 苍溪县| 衡阳市| 文山县| 昭觉县| 南召县| 宿州市| 阜城县| 名山县| 鸡东县| 大同县| 临高县| 永清县| 简阳市| 泸水县| 沅陵县| 定边县| 安西县| 紫云| 鄂托克旗| 丹阳市| 迁西县| 会宁县| 晋中市| 西青区| 宣城市| 宁津县| 高青县| 东平县| 淮阳县| 临桂县|