用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安装目前borlanddelphi5demosfastnethttp下有个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();这样就完成了一次寻呼
下一篇:公开密钥密码系统
↓相关文章:
- · 公开密钥密码系统
- · DELPHI的原子世界
- · Delphi中实现文件拷贝的三种方法
- · 在DELPHI程序中使用ADO对象存取ODBC
- · 如何用Delphi编写自己的可视化控件
- · Delphi中初始化.Ini文件的读写
- · Delphi开发者快速解决问题的两大网络利器
- · 在Delphi窗口中创建IE风格的菜单
- · Delphi使用ABC
- · delphi5。0秘籍大暴光
- · 怎样用delphi制作一个IPhunter(独孤剑客的IP猎人)
- · 使用Delphi获取系统信息
- · 通过调用API确定MEMO控件中的当前行和列
- · 用delphi编写医院的复杂报表
- · 关于精简BDE的一点疑问----我的几封信
- · 在DELPHI2.0/3.0中直接操作端口
- · 网络和通讯编程
- · 在Delphi程序中应用IE浏览器控件
- · Borland与Microsoft关于Delphi的对话
- · 远程控制篇:服务端程序关机时的处理
- · 远程控制篇:通过IP地址得到机器名
- · 远程控制篇:服务端程序的隐藏
- · 远程控制篇:模拟按键
- · 远程控制篇:获得网络邻居所有机器名
- · 远程控制篇:抓取远程屏幕图像
- · 有了网络监控 网络自由还会有吗?
- · 将某一主机域名解析为IP地址。
- · TWebBrowser流程讲解及如何判断下载网页成功
- · Kylix预览
- · 关于WEB应用程序的打印组件开发初探
- · 让你的“小猫”发传真技巧攻略
- · 安全技术:基于ARP欺骗的TCP伪连接DOS
- · 如何关闭端口防止病毒与黑客入侵
- · 运行多个系统 全线引爆虚拟机VMware
- · IE7 Build 5299 RSS新功能抢先看
- · 一些Windows系统安全配置方法
- · 网管必知 防溢出提权攻击解决办法
- · 自己动手做服务器安全(初级篇)
- · 披着“羊皮”的狼 TXT下的病毒阴谋
- · 让系统安全起来 把间谍软件请出硬盘
- · 简单三步走堵死SQLServer注入漏洞
- · 从细微处做起 全面打造系统安全
- · Windows上网后速度越来越慢怎么办?
- · 如何让让IE6也能实现反“钓鱼”
- · 上网安全 谨防ActiveX插件成病毒帮凶
- · 解析Windows Vista 5270的UAP功能
- · 世界之窗对决GB:浏览器截图功能比拼
- · 小技巧御大敌:如何防止IE被恶意修改
- · 在Cisco交换机上实现隔离访问
- · 与一个黑客的较量
- · 办公室共用电脑系统安全防范攻略
- · 一种“您无权查看该网页”的原因和解决方法
- · SQL注入程序带来的攻击及防范
- · 学习心得 TCP/IP攻击原理分析总结
- · SQL注入技术和跨站脚本攻击的检测
- · 真正安全起来 网页脚本攻击防范全攻略
- · 视频:ADSL宽带共享上网 2
- · 突破网络限制之三十六计篇
- · ADSL上网的常见问题及分析集锦
- · 视频:ADSL宽带共享上网

