短信网关接入程序的源码,基于SGIP协议1.2版本的进行了整理和改动,附件中有可运行版本的Demo以及SGIP1.2可运行的源码,对于SP接入程序运用的技术主要是多线程+Socket+各种协议的了解。
在开发中,多线程中要注意的是Dead Lock问题,线程"死等"的话会影响Web性能以及产生内存问题,所以在最大线程数以及响应时间要思考清楚,这部分是多线程需注意的,其次是Socket开发,这部分相比较代码固定些,首先创建连接的Scoket,然后通过Bind输入流得到连接状态,如state具体说明如下:
0:无错误,命令正确接收
1:非法登录,如登录名、口令出错、登录名与口令不符等
2:重复登录,如在同一TCP/IP连接中连续两次以上请求登录
3:连接过多,指单个节点要求同时建立的连接数过多
4:登录类型错,指bind命令中的logintype字段出错
5:参数格式错,指命令中参数值与参数类型不符或与协议规定的范围不符
等等类型的错误,根据具体错误匹配进行问题排查。在获得了状态无误后,通过Submit向网关write,然后通过read其in的方式获得是否发送成功。
对于和网关的连接中,头和体的定义很关键,否则会被网关过滤或者"死等"状态,消息ID及对应值如:
SGIP_BIND |
0x1 | <