设置http-equiv属性,具体怎么用,忘了,自己查吧
解决方案 »
- ssh框架整合时出了问题
- 在线等:spring和struts整合时出现以下问题:严重: action: null java.lang.ClassNotFoundException: org.springframework.web.struts.Cont
- JSP下如何获取用户ID和名字
- 关于注册画面中e-mail地址的校验
- 我用jsp从oracle中下载blob 是出现了阻塞
- 请教:在哪可以下载sql server2000驱动啊!最好是jdbc-odbc桥驱动
- javax.servlet.ServletException: 列名无效
- 修改了resin.conf中的<war-dir id='webapps'/>后,为什么session不能正确显示了
- 一个关于Beans的问题。
- 为什么要不直接/addStudent,而是写一个/toAddStudent的跳转页面?
- 计数器的奇怪问题。
- 一个通讯簿导出的问题
如果要做QQ那种功能我感觉需要软件支持,做成active控件问题好像也不少。
关注
首先,你要选择一台移动或者联通的短信服务器做你们的发送短信接口.这是最关键的一步,也是最底层的,当然这是需要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;
}