中国移动短信网关CMPP3.0 C#源代码:事件定义及相关工具函数

转载 2006年06月07日 09:09:00
using System;
using System.Text;
using System.Runtime.InteropServices;
using System.Threading;
using System.Collections;
using System.Diagnostics;
namespace Tiray.SMS
{
 //事件参数定义
 public class SMSEventArgs:EventArgs
 {
  SMS_STATE m_State;
  Object m_Data;
  DateTime m_dtTime;

  public SMS_STATE State
  {
   get{return m_State;}
   set{m_State=value;}
  }

  public object Data
  {
   get{return m_Data;}
   set{m_Data=value;}
  }
  public DateTime Time
  {
   get{return m_dtTime;}
   set{m_dtTime=value;}
  }

 }
 //事件处理函数
 public delegate void SMSEventHandler(object sender,SMSEventArgs e);
 
 //异步事件回调函数
 public delegate void SMSAsyncEvent(SMSEventArgs e);

 public class Utility
 {
  public static String Decode(Byte[] buf,int StartIndex,int Length,CODING Coding)
  {
   String str=String.Empty;
   if(Coding==CODING.ASCII)
    str=System.Text.Encoding.ASCII.GetString(buf,StartIndex,Length);
   
   else if(Coding==CODING.UCS2)
    str=System.Text.Encoding.BigEndianUnicode.GetString(buf,0,Length);
   else if(Coding==CODING.GBK)
    str=System.Text.UnicodeEncoding.GetEncoding("gb2312").GetString(buf,StartIndex,Length);
   return str;
  }
  public static Byte[] Encode(String str,CODING coding)
  {
   Byte[] buf=null;
   if(str==null)
    return buf;
   if(coding==CODING.ASCII)
    buf=System.Text.Encoding.ASCII.GetBytes(str);
   else if(coding==CODING.UCS2)
    buf=System.Text.Encoding.BigEndianUnicode.GetBytes(str);
   else if(coding==CODING.GBK)
    buf=System.Text.UnicodeEncoding.GetEncoding("gb2312").GetBytes(str);

   return buf;

  }
  public static UInt32 CountLength(String str,CODING coding)
  {
   Byte [] buf=Encode(str,coding);
   if(buf!=null)
    return (UInt32)buf.Length;
   else
    return 0;
  }

  public static Byte[] IntToNetBytes(object obj)
  {
   Byte[] bytes=null;
   if(obj.GetType()==System.Type.GetType("System.UInt32"))
   {
    UInt32 val=(UInt32) obj;
    bytes=BitConverter.GetBytes(val);
   }
   if(obj.GetType()==System.Type.GetType("System.UInt64"))
   {
    UInt64 val=(UInt64) obj;
    bytes=BitConverter.GetBytes(val);
   }

   if(bytes!=null)
    System.Array.Reverse(bytes);

   return bytes;

  }
  public static object NetBytesToInt(Byte[] bytes,int index,int length)
  {
   Array.Reverse(bytes,index,length);
   if(length==4)
    return BitConverter.ToUInt32(bytes,index);
   else if(length==8)
    return BitConverter.ToUInt64(bytes,index);
   else
    return 0;
  }
 }

}

【待续】

相关文章推荐

中国移动短信网关CMPP3.0 C#源代码:使用示例

Using Tiray.SMS...Tiray.SMS.CMPP30 m_CMPP=new Tiray.SMS.CMPP30();...//启动CMPPm_CMPP=new CMPP30(txt_CM...

中国移动短信网关CMPP3.0 C#源代码:CMPP30类(2)

protected CMPP_HEAD ReadHead()  {   CMPP_HEAD head=new CMPP_HEAD();   head.CommandID=0;   Byte[...

中国移动短信网关CMPP3.0 C#源代码:数据包定义

关于联合CMPP定义的各种数据包采用C语言中的联合(Union)来处理是最有效率的,因为接收和发送的是一个字节数组,使用联合可以方便地在字节数组和数据包结构之间转换。C#本身并不支持联合,但可以使用P...

一个 Java 的 Socket 服务器和客户端通信的例子

一个 HelloWord 级别的 Java Socket 通信的例子。通讯过程:         先启动 Server 端,进入一个死循环以便一直监听某端口是否有连接请求。然后运行 Client 端...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)