目前,三大运营商都提供了自己的短信相关协议,比如联通的SGIP协议、移动的CMPP协议、电信的SMPP协议,发送和接收短信、彩信可以根据运营商提供的接口,编写相应的程序,以达到想要的功能。下面简单介绍一下工作中遇到的使用联通SGIP协议的问题。
发送短信比较简单,客户端建立socket,先发送一个Bind请求,解析收到的BindResp包,正常连接后可以使用submit命令发送短信,获取解析收到的submitresp包,发送成功后调用unbind命令断开连接,解析收到的UnbindResp,如果命令操作正常就关闭socket,这就是一个发送短信的过程。
接收短信比较复杂一些,下图为联通SGIP接收短信的流程
需要写一个服务器端程序,实时的监听联通分配的某个端口,如果有数据来,就建立一个socket,遵循上面的协议,打开连接,获取数据并解析,最后关闭socket。
具体的程序代码如下所示:
public void receiveMsg() {
ServerSocket serversocket=null;
Socket so=null;
OutputStream output=null;
InputStream input=null;
SGIP_Command