用Delphi实现BP机、手机短讯 精华篇
很多人一定用过OICQ,想必也用过了它的BP机短讯、手机短讯,编程的朋友一定想实现这种功能,
如果你的程序能发到手机、发到BP机一定很酷。现在我就介绍一种可行的方法。
一、原理
它不同于OICQ的双方都在网上才能进行交流的寻呼功能,它可以将文字信息发送到真正的寻呼机上。
只要你能够上网,就可以自己动手,随时随地将信息发送出去,即使你在国外,也可以利用它来向
国内的友人发送信息了,而且不用交纳国际长途费用,是不是方便又省事呢!
二、分析
现在网上各寻呼台都有网上服务,网页寻呼(Web Paging)就是常用的一种。它是通过在互联网易做图问
寻呼台的主页,然后由寻呼台的信息寻呼系统打传呼。所以我们只要利用HTTP协议就可以实现网络
寻呼了。以下就简单介绍一下HTTP协议: HTTP中完成一个会话通常要完成:
1)客户端程序与服务器建立连接
2)发送请求
3)服务器响应客户端
4)关闭连接
HTTP常用到的请求有:
1)GET(请求一万维网页)
2)HEAD(读取一万维网页的头部)
3)PUT(请求一存储万维网页)
4)POST(附加一个命名的资源)
5)DELETE(删除万维网页)
6)LINK(连接两个已有的资源)
7)UNLINK(断开两个已有资源的连接)
HTTP中常用到的应答状态代码有:(*号代表0-9间的一个数)
1. 1** (信息)
2. 2**(成功)
3.4**(客户端错误)
4.5**(服务器错误)
其实我们要实现的程序,只用POST、GET请求,收到正常应答就可以了。POST可以用于把用户输入
的数据以数据流的方式传给CGI程序,CGI通过Contect-Length环境变量来取相应长度的数据流信息。
POST请求格式如下:
|
服务器正常应答的头部结构为:
200 OK HTTP/1.0 说明提交数据成功
三、程序的实现
Delphi中NMHTTP已经可以很容易的实现上面的所说的数据提交,而且它还支持Proxy、这样对于通过
代理服务器上网一样可以适用,并且它不是OICQ中发送讯信所用到SOCKET5代理。
新建一个窗体,加入组件一个ComboBox,命名为callto,用于存放寻呼对象,如国信寻呼就有95908、94908、94909、98062、98063、98019、98035、98052、98038、99055、98060、98061、98051、98003、99062、99016、99017、99018、99019、99046、99076;加入组件Edit,命名为tonumber,
表示寻呼号码;加入组件RadioGroup,命名为RadioGroup1,Caption设为呼机类型,items中加入两
项,分别为中文机、数字机;加入组件Edit,命名为firstName,用于表示发寻呼人的姓;加入组件RadioGroup,命名为RadioGroup2,Caption设为寻呼人性别,items中加入两项,分别为先生、易做图;
加入组件Memo,命名为callmsg,用于输入发送的信息(注:对于数字机只能是数字信息);加入组件NMHTTP,命名为NMHTTP1;加入Checkbox,命名为ifuseproxy,用于确定是否使用代理服务器;加入两
个Edit组件,分别用于软件代理服务器地址、代理服务器端口;最后加入命令按钮,Caption设为“发送”。
现在以国信寻呼为例,它用GET请求就可以实现了,“发送”按钮的程序代码如下:
|
有些寻呼(如润迅寻呼就不能用上面的GET请求实现,它要用POST请求),使用与上面相差不大,如
下面是NMHTTP的POST用法:
|
// 把要提交的数据先放在test.txt文件中:格式为stnid=A&pageno=123456....
NMHTTP1.Post(http://www.wocall.com/script/zbwebcall.asp,test.txt);
file://NMHTTP的具体用法在Delphi
补充:软件开发 , Delphi ,