`
wangxc
  • 浏览: 213021 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

J2MESMS手机收发短信程序

    博客分类:
  • J2ME
阅读更多
在J2ME中(SMS)手机之间的短信收发是需要端口的,我们在发短信时一般不用写端口,在接收短信时如果发送方没有写端口默认会作为普通短信发送到手机上。
使用J2ME软件时,发送短信手机和接受短信手机的端口要一直才行收到对方发来的短信
如果接收方一端关闭了J2ME软件,一般是作为普通短信发送到接收方。

短信发送程序:
package com.mopietek;

import javax.microedition.io.Connector;
import javax.wireless.messaging.MessageConnection;
import javax.wireless.messaging.TextMessage;

public class SMSSender implements Runnable{

	private static SMSSender me = new SMSSender();
	private boolean sending = false;
	private String port = null;
	private String msgString = null;
	private String receiver = null;
	
	public SMSSender(){
		
	}
	
	public static SMSSender getInstance(){
		return me;
	}
	
	public boolean isSending(){
		return sending;
	}
	
	
	public void sendMsg(String r,String p,String m){
		if(sending) return;
		receiver = r;
		port = p;
		msgString = m;
		Thread t = new Thread(this);
		t.start();
	}
	
	public void run() {
		// TODO Auto-generated method stub
		String address = "sms://"+receiver +":"+port;
		sending = true;
		MessageConnection c = null;
		try{
           c = (MessageConnection) Connector.open(address);
           TextMessage txtmessage = (TextMessage)c.newMessage(
        	  MessageConnection.TEXT_MESSAGE);	   
           txtmessage.setAddress(address);
           txtmessage.setPayloadText(msgString);
           c.send(txtmessage);
		}catch(Exception e){e.printStackTrace();}
		if(c !=null){
			try{
				c.close();
			}catch(Exception e){
				e.printStackTrace();
			}
		}
		 sending = false;
	}

}


短信接受程序
package com.mopietek;

import javax.microedition.io.Connector;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.wireless.messaging.Message;
import javax.wireless.messaging.MessageConnection;
import javax.wireless.messaging.MessageListener;
import javax.wireless.messaging.TextMessage;

public class SMSMIDlet extends MIDlet implements CommandListener,MessageListener,Runnable{

	private SMSSender sender = null;
	private Command sendCommand = new Command("Send",Command.SCREEN,1);
	private Command exitCommand = new Command("Exit",Command.EXIT,2);
	
	private final String port = "1234";
	private TextField numberEntry = null;
	private TextField msgEntry = null;
	private Form form = null;
	private String senderAddress=null;
	private boolean endNow = false;
	private MessageConnection c = null;
	String msgReceived = null;
	
	public SMSMIDlet(){
        
		sender = SMSSender.getInstance();
	}
	
	
	
	
	protected void destroyApp(boolean param) throws MIDletStateChangeException {
		
       try{
    	   endNow = true;
    	   c.close();
       }catch(Exception e){e.printStackTrace();}	
	}

	protected void pauseApp() {

		try{
			endNow = true;
			c.close();
		}catch(Exception e){
			e.printStackTrace();
		}
	}

	protected void startApp() throws MIDletStateChangeException {

		if(form == null){
			form = new Form("SMSMIDlet");
			numberEntry = new TextField("Connect to:",null,256,TextField.PHONENUMBER);
			msgEntry = new TextField("Message:",null,160,TextField.ANY);
			form.append(numberEntry);
			form.append(msgEntry);
			
			form.addCommand(exitCommand);
			form.addCommand(sendCommand);
			form.setCommandListener(this);
		}
		Display.getDisplay(this).setCurrent(form);
		startReceive();
	}

	public void commandAction(Command c, Displayable d) {

		if(c == exitCommand){
			if(!sender.isSending()){
				try {
					destroyApp(true);
					notifyDestroyed();
				} catch (MIDletStateChangeException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			
		}else if(c == sendCommand){
			String dest = numberEntry.getString();
			String msg = msgEntry.getString();
			if(dest.length()>0){
				sender.sendMsg(dest, port, msg);
			}
		}
	}

	public void notifyIncomingMessage(MessageConnection arg0) {
		// TODO Auto-generated method stub
		
	}

	public void run() {
		// TODO Auto-generated method stub
		Message msg = null;
	    c = null;
	    endNow = false;
	    
	    try{
	    	c = (MessageConnection) Connector.open("sms://:"+port);
	    	msg = c.receive();
	    	while((msg != null)&& (!endNow)){
	    		if(msg instanceof TextMessage){
	    			msgReceived = ((TextMessage)msg).getPayloadText();
	    			Display.getDisplay(this).callSerially(new SetMessage());
	    		}
	    		msg = c.receive();
	    	}
	    }catch(Exception e){
	    	e.printStackTrace();
	    }
	}
	
	private void startReceive(){
      
		Thread t;
        t = new Thread(this);
        t.start();
	}

	class SetMessage implements Runnable{

		public void run() {
            msgEntry.setString(msgReceived);			
		}
		
	}
}



分享到:
评论

相关推荐

    J2MESMS收发短信源代码

    通过分析和理解这个J2MESMS收发短信源代码,开发者可以学习到如何在移动环境中实现通信功能,这对于开发其他类型的移动应用也有很大的帮助。对于初学者来说,虽然代码可能较为复杂,但这是一个很好的学习实践机会,...

    手机短信收发程序示例

    【手机短信收发程序示例】是一个基于C++编写的实用程序,旨在帮助开发者理解和实现手机短信的发送与接收功能。这个程序集成了基础的通信协议,如GSM(全球系统移动通信)或3GPP的SMS(短消息服务)标准,使用户能够...

    手机短信收发程序

    《手机短信收发程序详解及应用》 手机短信收发程序是移动通信中不可或缺的一部分,它使得用户可以通过手机进行文字信息的传递。本程序提供了一种经典的方式,允许开发者将其集成到自己的应用程序中,实现短信功能。...

    手机短信收发程序_mode.rar_C# 短信_手机短信_收发 短信_短信_短信收发

    《C#实现手机短信收发程序详解》 手机短信收发程序是移动通信技术与软件编程结合的重要应用,尤其在企业级服务、自动化系统以及个人通信中有着广泛的应用。本程序基于C#语言,旨在提供一种高效、稳定且功能全面的...

    手机短信收发程序(直接调用类)

    在移动通信领域,手机短信收发程序是一种常见的应用,它允许用户通过手机或者应用程序发送和接收文本消息。本文将深入探讨手机短信收发程序的工作原理、实现方式以及相关的技术细节。 首先,我们要理解短信(Short ...

    手机短信收发程序供大家学习参考

    手机短信收发程序是通信技术领域的一个重要组成部分,特别是在移动应用开发中,它涉及到设备间的短消息服务(Short Message Service, SMS)交互。这个程序可以让用户通过手机发送和接收短信,是很多应用的基础功能,...

    手机收发短信工具V0.3

    手机收发短信工具V0.3正是这样一款应用,它采用了一系列先进技术,以提高短信收发的效率和可靠性。 首先,我们必须了解事务处理在短信收发中的重要性。在手机收发短信工具V0.3中,事务处理机制保障了即便在不稳定...

    安卓手机无法正常收发短信的检查工具

    本软件是安卓手机收发短信异常的检查工具。短信是用户广泛使用的一项业务,用户在使用短信业务时候碰到...核查的问题包括手机的短信收件箱是否溢出或者机身内存不足、手机短信中心号码是否正确、是否有安全软件拦截等。

    用C语言写的手机短信收发程序代码

    【标题】中的“用C语言写的手机短信收发程序代码”表示我们将要探讨的是一个使用C语言编写的软件,该软件具有发送和接收手机短信的功能。C语言是一种基础且广泛使用的编程语言,常用于系统级编程和嵌入式开发,包括...

    介绍用MCS-51系列单片机控制手机收发短信息的原理、硬件电路

    单片机控制手机收发短信,需要编写符合GSM07.05协议的程序,通过发送特定的AT指令来操作手机。表1列出了常用的AT指令,例如: - ATE0:重置手机 - AT+CSMS:选择短信息服务 - AT+CPMS:选择短信息内存 - AT+CMGF:...

    51单片机控制手机收发短信息的原理

    51单片机控制手机收发短信息的原理是利用GSM手机的串行接口,单片机向手机收发一系列的AT命令,从而达到控制手机收发SMS的目的。GSM系统是目前基于时分多址技术的移动通讯体制中比较成熟、完善、应用最广泛的一种...

    手机短信收发程序成.

    手机短信收发程序是移动设备上常见的功能,它允许用户发送和接收文本消息,有时甚至支持多媒体内容(如图片、音频或视频)。在本文中,我们将深入探讨手机短信收发程序背后的技术、工作原理以及相关的知识点。 首先...

    java收发短信程序

    Java收发短信程序是利用Java编程语言开发的一种通信应用,主要功能是实现设备或系统间的短信发送和接收。在移动互联网和物联网应用中,这样的功能非常常见,例如验证码验证、通知服务、远程控制等场景。Java短信技术...

    java手机短信收发程序源码

    Java手机短信收发程序是一种基于Java编程语言实现的软件,用于发送和接收手机短信。这个程序的核心在于利用Java的Socket通信技术以及相关的SMS协议来与移动运营商的短信网关进行交互。下面将详细介绍该程序涉及的...

    C语言写的手机短信收发程序代码

    在这个场景中,我们讨论的是一个利用C语言编写的手机短信收发程序,它依赖于硬件设备——短信猫来实现功能。短信猫是一种能够通过GSM/CDMA网络发送和接收短信的设备,通常用在自动化系统、远程控制或监控系统中。 ...

    51单片机控制TC35收发短信程序

    本程序为TC35无线模块的典型运用,程序里包含了TC35开关机、收发短信、读取短信等程序。适合初学者及项目开发者参考。

    wxh 手机短信收发程序

    【wxh 手机短信收发程序】是一个专门设计用于实现手机短信发送和接收功能的软件应用。在当今数字化时代,手机短信作为一种便捷的通信方式,广泛应用于个人通讯、商业推广以及服务提醒等多个领域。这款程序能够帮助...

    用单片机控制手机收发短信息

    本项目聚焦于如何利用51单片机来实现手机的短信收发功能,这对于远程监控、数据传输和智能设备之间的通信具有重要意义。 51系列单片机是市面上最经典的8位单片机之一,由Intel公司推出,现由许多厂商生产,如Atmel...

    VB做的收发短信的程序

    本文将深入探讨使用Visual Basic(VB)编程语言构建的收发短信程序,帮助开发者理解和掌握如何通过VB实现在个人电脑(PC)上与USB连接的手机进行通信。 VB,全称Visual Basic,是Microsoft公司推出的一种面向对象的...

Global site tag (gtag.js) - Google Analytics