| J2EE--关于用JAVA开发短信方面的知识 |
|
|
|
|
| 来源: 作者: 添加日期:2007-11-9 22:29:29 点击次数: |
|
现在流行的网络业务莫过于短信了.网易新浪等都因此而盈利,股价上涨.我凭自己的经验和公司支持,也就
乘着东风来研究一下了!
首先,你要选择一台移动或者联通的短信服务器做你们的发送短信接口.这是最关键的一步,也是最底层的,
当然这是需要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, |
|
| |