我的漫漫程序之旅

专注于JavaWeb开发
随笔 - 37, 文章 - 309, 评论 - 411, 引用 - 0
数据加载中……

利用jSMSEngine开源包进行短信的收发

公司项目中要用到短信猫进行收发短信,在网上找到一个开源的jSMSEngine。经测试jSMSEngine
可以实现项目需求。

jSMSEngine
开源包可以利用GSM Modem或带有红外线、蓝牙、数据线的手机与电脑连通,收发短信。
相应的类库下载我已经打包好了

jSMSEngine开源项目主页
http://sourceforge.net/projects/jsmsengine/

相关类库下载

让我们先来配置开发环境环境。

1.    复制comm.jar、jSMSEngine.jar到jre\lib\ext文件夹下,或把开发包添加到开发环境中。
2.    复制javax.comm.properties到\jre\lib目录下。
3.    复制win32com.dll到\jre\bin目录下。


用如果是用Eclipse开发的话看看Install JRE里面的JRE路径,用那个就可以了。

如果不用开发工具的话jre就是你在系统环境里配置的JAVA_HOME 的路径。

以上工作是必须的,很重要。到这时环境已经准备好了。


在设备管理器下,看看手机占用的哪个com端口,更改程序里面的com端口和比特率两个参数,找一台带数据线的手机试试,最好不带内存卡的那种。

发送短信代码:
import java.util.LinkedList;

import org.jsmsengine.CIncomingMessage;
import org.jsmsengine.CMessage;
import org.jsmsengine.COutgoingMessage;
import org.jsmsengine.CService;

@SuppressWarnings(
"unchecked")
/****
 * 收发短信的服务类
 
*/
public class MsgService
{
    
private static CService cs = null;

    
public static void init(String port, Integer fm)
    {
        
// 指定端口号和频率
        cs = new CService(port, fm);
    }

    
/**
     * 发送短信
     * 
     * 
@param phone
     *            手机号
     * 
@param info
     *            短信内容
     
*/
    
public static void sendmsg(String phone, String info)
    {
        
try
        {
            System.out.println(
"正在发送短信");
            
// 初始化连接
            cs.initialize();
            
// 设置jSMSEngine服务的缓存
            cs.setCacheDir(".\\");
            
// 连接
            int status = cs.connect();
            
// 连接成功(可以是GSM Modem、带有红外线、蓝牙、数据线的手机)
            if (status == CService.ERR_OK)
            {
                cs.setOperationMode(CService.MODE_PDU);
                cs.setSmscNumber(
"");
                COutgoingMessage msg 
= new COutgoingMessage(phone, info);
                msg.setMessageEncoding(CMessage.MESSAGE_ENCODING_UNICODE);
                
if (cs.sendMessage(msg) == CService.ERR_OK)
                {
                    System.out.println(
"" + phone + "发送短信成功!");
                } 
else
                {
                    System.out.println(
"" + phone + "发送短信失败!");
                }
                
// 断开连接
                cs.disconnect();
            } 
else
            {
                System.out.println(
"连接设备失败, 异常: " + status);
            }
        } 
catch (Exception e)
        {
            e.printStackTrace();
        }
    }
    
/***
     * 读取短信内容
     
*/
    
public static void readmsg()
    {
        
//存入短信集合
        LinkedList msgList = new LinkedList();
        
try
        {
            System.out.println(
"读取短信中。。。。");
            cs.initialize();
            cs.setCacheDir(
".\\");
            
// 连接设备
            int status = cs.connect(); 
            
if (status == CService.ERR_OK)
            {
                cs.setOperationMode(CService.MODE_PDU);
                
if (cs.readMessages(msgList, CIncomingMessage.CLASS_ALL) == CService.ERR_OK)
                    
for (int i = 0; i < msgList.size(); i++)
                    {
                        CIncomingMessage msg 
= (CIncomingMessage) msgList.get(i);
                        System.out.println(msg);
                        
//输出短信文本
                        System.out.println(msg.getText());
                        
//删除短信
                        cs.deleteMessage(i);
                    }
                
// 断开连接
                cs.disconnect();
            } 
else
                System.out.println(
"设备连接失败:" + status);
        } 
catch (Exception e)
        {
            e.printStackTrace();
        }
    }

    
public static void main(String[] args)
    {
        init(
"com4"9600);
        sendmsg(
"15800000000""这是一个测试程序");
        readmsg();
    }
}

ok,测试成功!


posted on 2012-01-13 13:40 々上善若水々 阅读(1679) 评论(3)  编辑  收藏 所属分类: J2SE

评论

# re: 利用jSMSEngine开源包进行短信的收发[未登录]  回复  更多评论   

你好请问利用jSMSEngine开源包进行短信的收发
出现了
Exception in thread "main" java.lang.NoClassDefFoundError: gnu/io/SerialPortEventListener异常
请问是什么问题呢?

还有
1. 复制comm.jar、jSMSEngine.jar到jre\lib\ext文件夹下,或把开发包添加到开发环境中。
2. 复制javax.comm.properties到\jre\lib目录下。
3. 复制win32com.dll到\jre\bin目录下。都已经做好了

我的电脑操作系统是win7旗舰版
2016-03-02 15:23 | 我是菜鸟

# re: 利用jSMSEngine开源包进行短信的收发[未登录]  回复  更多评论   

知道的话联系我qq邮箱谢谢
2016-03-02 15:23 | 我是菜鸟

# re: 利用jSMSEngine开源包进行短信的收发[未登录]  回复  更多评论   

qq邮箱
550725115@qq.com
2016-03-02 15:24 | 我是菜鸟

只有注册用户登录后才能发表评论。


网站导航: