又看到两年前的CMPP代码,分别有C#和JAVA版本,记得当时先做C#,再移植到JAVA,就是简单的把C#代码复制到JBUILDRE,编译,看哪里不能通过就替换一下 关键字 之类的,基本也OK了。 也不能说完成,因为只是做了一下SP和SMG之间的几个协议 BIND/BIND_RESP/UNBIND/UNBIND_RESP/SUBMIT/SUBMIT_RESP/DELIVER/DELIVER_RESP,GNS和SMG之间的没有作,估计也差不多吧。实际发送是OK的,接收模拟器发来的信息也OK。 byte []bmsg=null; switch(d.smstype) { case 0:www.shengfang.org d.msglen=System.Text.ASCIIEncoding.ASCII.GetMaxByteCount(d.msg.Length); bmsg=System.Text.ASCIIEncoding.ASCII.GetBytes(d.msg); break; case 8: d.msglen=www.shengfang.orgbigEndianUnicode.GetMaxByteCount(d.msg.Length); bmsg=bigEndianUnicode.GetBytes(d.msg); break; case 15: d.msglen=www.shengfang.orgSystem.Text.Encoding.Default.GetMaxByteCount(d.msg.Length); bmsg=System.Text.Encoding.Default.GetBytes(d.msg);//source_addr break; default: break; } d.Check();www.shengfang.org HeaderMake(idsubmit,lensubmit+www.shengfang.orgd.msglen,out tmpmsg); int offset=SGIPMsg.HeaderLen; Type MyType = d.GetType(); FieldInfo[] fields = MyType.GetFields(www.shengfang.org BindingFlags.Instance &line;BindingFlags.Public &line; BindingFlags.GetField ); String stmp; String [] strnums=null; for (int i = 0; i < fields.Length; i++) { switch(fields[i].GetValue(d).GetType().ToString()) { case "System.Byte":www.shengfang.org tmpmsg[offset]=www.shengfang.org(byte)fields[i].GetValue(d); offset+=1; break; case "System.Int32": Tools.int2byte((int)fields[i].GetValue(d),tmpmsg,offset); offset+=4; break; case "System.String": stmp=fields[i].GetValue(d).www.shengfang.orgToString(); Array.Copy(encoder.GetBytes(stmp),0,tmpmsg,offset,stmp.Length); if(i<20) offset+=www.shengfang.orgSGIPSubmitStruct.ilen[i]; else Array.Copy(bmsg,0,tmpmsg,offset,bmsg.Length);//source_addr break; case "System.String[]": strnums=www.shengfang.org(string [])fields[i].GetValue(d); for (int j=0;j<strnums.Length;j++) { Array.Copy(encoder.GetBytes(strnums[j]),0,tmpmsg,offset,strnums[j].Length); offset+=SGIPSubmitStruct.ilen[i];www.shengfang.org } break;www.shengfang.org default: break;www.shengfang.org } 做的时候想用反射,现在看看这段代码,还不如用数组,分别定义长度、类型、数值,可能代码更加清楚一些。算了,先这样吧,看看能不能移植到JAVA下或者LINUX C下面 GNS Gateway Name Server,负责系统路由的管理和同步 MO 由手机用户提交的短消息 MT 由手机用户接收的短消息 SGIP Short Message Gateway Interface Protocol,本协议所描述的短消息网关接口协议,用于完成在SMG和SP之间、SMG和SMG之间短消息的发送、接收和转发功能,以及SMG和GNS之间路由表的同步功能 SMG Short Message Gateway ,联通公司的短消息网关,SMG之间的通讯协议采用SGIP SMPP Short Message Peer to Peer,短消息点对点协议,采用3.3版本 SMSC Short Message Service Center ,短消息中心 SP Service Provider,服务提供商 字体:大 中 小 |