网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.方便管理plugin或rcp的icons.
.处理驱动器和文件夹.
.return 语句.
.在Java applet中如何显示另外一个.
.基于服务器的Java安全产品.
.编程基础入门:Java修饰词的总结.
.开发经验谈:贪吃蛇游戏的MIDP实.
.对Java多态性综合运用的探讨.
.JBuilder2005单元测试之创建测试.
.通过XSLT访问Java代码.
.告诉你J2ME是什么.
.绕过Java开发瓶颈:解析EJB.
.JGraph经典常见问题解答(FAQ).
.初探Java类加载机制的奥秘.
.用Java编程获得本机和服务器IP地.
.利用JBuilder2005开发Web应用程序.
.Eclipse3.1中体验J2SE5.0之注释类.
.在J2me游戏使用“精灵”-Sprite.
.break 语句.
.全面保护你的Java程序安全.

关于用JAVA开发短信方面的知识

发表日期:2008-1-5


 



首先,你要选择一台移动或者联通的短信服务器做你们的发送短信接口.这是最要害的一步,也是最底层的,当然这是需要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;
}


当然要根据不同的参数来判定不同的错误和正确的发送.就谈这么多了,假如大家有什么不明的,可以和我联系.


上一篇:Eclipse插件开发之EasyExplorer 人气:824
下一篇:用Java动态代理来创建包装器 人气:684
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐