选择显示字体大小

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

xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 



首先,你要选择一台移动或者联通的短信服务器做你们的发送短信接口.这是最关键的一步,也是最底层的,当然这是需要much money的,呵呵.没办法!现实了点....

然后你就是在连接接口的服务器做技术了.用javasocket 来监听客户端的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 = &#39;\0&#39;;
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 == &#39;t&#39;)
{
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 = &#39;\0&#39;;
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 == &#39;t&#39;)
subres = 0;
else
subres = 11;
}
catch(exception e)
{
subres = 1;
}
return subres;
}


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


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons