用Delphi实现BP机、手机短讯

原创 2001年05月05日 12:44:00

用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请求格式如下:
POST http://www2.scuta.edu.cn/stu/chatroom/check.asp HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*
Referer: http://www2.scuta.edu.cn/stu/
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
Proxy-Connection: Keep-Alive
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)
Host: www2.scuta.edu.cn
Content-Length: 87
Pragma: no-cache
Cookie: ASPSESSIONIDQGGGQHHE=ABGNNOJCIGOFCDLBIOLHKAFK
服务器正常应答的头部结构为:
  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请求就可以实现了,“发送”按钮的程序代码如下:
procedure TForm1.Button1Click(Sender: TObject);
  var callstr:string;
begin            callstr:='http://tips.gxspace.com/cgi-bin/tips/webpaging?stn_id='+callto.Text+'&page_no='+tonumber.Text;
     case RadioGroup1.ItemIndex of
       0:callstr:=callstr+'&pager_type=C';
       1:callstr:=callstr+'&pager_type=N';
     end;
     callstr:=callstr+'&firstname='+firstname.text;
     case RadioGroup2.ItemIndex of
       0:callstr:=callstr+'&title=0';
       1:callstr:=callstr+'&title=1';
     end;    
     callstr:=callstr+'&msg='+callmsg.Text+'&answer=null&B1=发送寻呼';
  NMHTTP1.InputFileMode := FALSE;
  NMHTTP1.OutputFileMode := FALSE;
  NMHTTP1.ReportLevel := Status_Basic;
  If ifuseproxy.Checked then
  Begin
    NMHTTP1.Proxy := Edit1.Text;
    NMHTTP1.ProxyPort := StrToInt(Edit2.Text);
  End;
  NMHTTP1.Get(callstr);
end;

有些寻呼(如润迅寻呼就不能用上面的GET请求实现,它要用POST请求),使用与上面相差不大,如下面是NMHTTP的POST用法:
  NMHTTP1.InputFileMode:=False;
  NMHTTP1.OutputFileMode:=True; 
  NMHTTP1.ReportLevel:=Status_Basic;
  If ifuseproxy.Checked then
  Begin
    NMHTTP1.Proxy := Edit1.Text;
    NMHTTP1.ProxyPort := StrToInt(Edit2.Text);
  End;
  With NMHTTP1.HeaderInfo do
  Begin
    Cookie := Edit5.Text;
    LocalMailAddress := Edit6.Text;
    LocalProgram := Edit7.Text;
    Referer := Edit8.Text;
    UserID := Edit9.Text;
    Password := Edit10.Text;
  End;
//  把要提交的数据先放在test.txt文件中:格式为stnid=A&pageno=123456...
  NMHTTP1.Post('http://www.wocall.com/script/zbwebcall.asp','test.txt');
//NMHTTP的具体用法在Delphi安装目前/Borland/Delphi5/Demos/FastNet/Http下有个NMHTTP使用的例子。
以上都是用NMHTTP实现的,其实用Delphi中的WebBrowser组件同样可以完成数据的提交,使用是这样的 Webbrowser1.OleObject.Document.FrontPage_Form1.submit();
说明:WebBrowser1是WebBrowser组件的名,Frontpage_Form1是用WebBrowser打开的网页中的表单名
网页中的表单是这机样的:
<FORM name=FrontPage_Form1  action=http://message.com.cn/cgi-bin/ips/webpaging  method=post>
......
</Form>
这样的实现方法就是用程序生成一个已经按用户输入信息生成一个网页,然后通过WebBrowser1.Navigate(生成的网页),最后提交到服务器Webbrowser1.OleObject.Document.FrontPage_Form1.submit();这样就完成了一次寻呼

从感知机到BP神经网络,简单BP神经网络的实现

1、感知器 要了解BP神经网络之前,必须先来看看第一代神经网络–感知器。虽然它非常简陋,但却有着一些思想,一直沿用到现在。 1.1感知器的构造: 感知器是由两层神经元构成,在百度上可以找到它的构...
  • weixin_38574709
  • weixin_38574709
  • 2017年04月29日 21:11
  • 128

感知机-BP神经网络

感知机(perceptron)数据集的线性可分: 对数据集 若存在某个超平面 w·x+b=0,能够将数据集的正实例点和负实例点完全正确地划分到超平面的两侧,即对所有y=+1的实例,w·x+b>0,...
  • GaoShan1011
  • GaoShan1011
  • 2017年01月04日 00:41
  • 408

神经网络和深度学习简史1-从感知机到BP神经网络

原文作者:Andrey Kurenkov  机器之心编译出品 原文地址:http://www.almosthuman.cn/2016/01/23/koarh/ 导读:这是《神经网络...
  • dahuacai
  • dahuacai
  • 2016年01月26日 23:03
  • 1813

SVM、BP了解以及性能比较

SVM的了解 通俗的说SVM 就是一种二分类器,特征空间上的间隔最大化的分类器,目的是从特征学习中取出一个0/1分类模型,对于二分类问题y只取两个值,目标是求一个超平面,而且有着很重要的意义。 直...
  • he_min
  • he_min
  • 2015年08月29日 16:25
  • 3809

神经网络和深度学习简史(第一部分):从感知机到BP算法

http://it.sohu.com/20160123/n435630017.shtml 神经网络和深度学习简史(第一部分):从感知机到BP算法 机器之心Synced2016-01-23 ...
  • kebu12345678
  • kebu12345678
  • 2017年02月04日 20:52
  • 458

Delphi XE4 For IOS真机调试配置教程

大家好,我是DelphiTeacher,一个Delphi狂热爱好者。 Embarcadero在4月22号发布了XE4,4月25号在深圳开了发布会,在上海没有开发布会,让我感到很失望。 因为...
  • DelphiTeacher
  • DelphiTeacher
  • 2013年05月04日 23:09
  • 17958

Android手机中的AP与BP

概念: 手机的AP和BP: AP:ApplicationProcessor,即应用芯片 BP:BasebandProcessor,即基带芯片 根据上下文可以指代硬件和软件两种意思。大多数的...
  • u013278940
  • u013278940
  • 2016年03月29日 17:39
  • 927

手机开发中的AP与BP的概念

手机的AP和BP: AP:ApplicationProcessor,即应用芯片 BP:BasebandProcessor,即基带芯片 AP上面则运行了我们通常的操作系统和应用软件,如Androi...
  • macong01
  • macong01
  • 2013年11月12日 16:34
  • 4107

神经网络基础 - Python编程实现标准BP算法

标准BP算法的python实现及实验。
  • Snoopy_Yuan
  • Snoopy_Yuan
  • 2017年04月25日 19:10
  • 2378

Delphi 获取安卓手机WIFI信息(XE8)

Delphi 获取安卓手机WIFI信息(XE8)源码
  • lyf_lyf
  • lyf_lyf
  • 2015年09月02日 01:14
  • 2073
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用Delphi实现BP机、手机短讯
举报原因:
原因补充:

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