摘要:作者:广东南海市公安局计算机安全监察股 喻凯
当要检测的ip比较少时,我们一般直接使用dos命令ping来实现。但是,如果我们要检测的ip比较多时(比如一个网段),再用ping命令就比较繁琐了,即使写一个批处理来实现,大把数据看起来也让人恼火。这里,我们用delphi实现对批量ip的检测,检测结果用明了的图形显示.
一:程序实现
在这个程序中,我们用treeview来表示检测的ip结果;用......
摘要:/修改
var
form1: tform1;
startbutton: hwnd;
oldbitmap: thandle;
newimage: tpicture;
/ 将代码放入formcreate事件
procedure tform1.formcreate(sender: tobject);
begin
newimage := tpicture.create;
......
用Delphi设计自己的代理服务器 笔者在编写一个上网计费软件时,涉及到如何对局域网中各工作站上网计费问题.一般来讲,这些工作站通过代理服务器上网,而采用现成的代理服务器软件时,由于代理服务器软件是封闭的系统,很难编写程序获取实时的上网计时信息.因此,考虑是否能编写自己的代理服务器,一方面解决群体上网,另一方面又解决上网的计费问题呢?
经过实验性编程,终于圆满地解决了该问题.现写出来,与各位同行分享. 【程序编程相关:
在Delphi应用程序中拖动控件】 【推荐阅读:
用InstallShield制作数据库应】
【扩展信息:
用Delphi 5创建Web Servi】
1. 思路
当前流行的浏览器的系统选项中有一个参数,即“通过代理服务器连接”,经过编程测
试,当局域网中一台工作站指定了该属性,再发出internet请求时,请求数据将发送到所指定的代理服务器上,以下为请求数据包示例:
get http://home.microsoft.com/intl/cn/ http/1.0
accept: */*
accept-language: zh-cn
accept-encoding: gzip, deflate
user-agent: mozilla/4.0 (compatible; msie 5.0; windows nt)
host: home.microsoft.com
proxy-connection: keep-alive
其中第一行为目标url及相关方法.协议,“host”行指定了目标主机的地址.
由此知道了代理服务的过程:接收被代理端的请求.连接真正的主机.接收主机返回的数据.将接收数据发送到被代理端.
为此可编写一个简单的程序,完成上述网络通信重定向问题.
用delphi设计时,选用serversocket作为与被代理工作站通信的套接字控件,选用clientsocket动态数组作为与远程主机通信的套接字控件.
编程时应解决的一个重要问题是多重连接处理问题,为了加快代理服务的速度与被代理端的响应速度,套接字控件的属性应设为非阻塞型;各通信会话与套接字动态绑定,用套接字的sockethandle属性值确定属于哪一个会话.
通信的衔接过程如下图所示:
代理服务器
serversocket
(1) 接 收
被代理端 发 送 远程主机
(6) (2) (5)
browser clientsocket (4) web server
接 收
发 送 (3)
(1).被代理端浏览器发出web请求,代理服务器的serversocket接收到请求.
(2).代理服务器程序自动创建一个clientsocket,并设置主机地址.端口等属性,然后连接远程主机.
(3).远程连通后激发发送事件,将serversocket接收到的web请求数据包发送到远程主机.
(4).当远程主机返回页面数据时,激发clientsocket的读事件,读取页面数据.
(5).代理服务器程序根据绑定信息确定属于serversocket控件中的哪一个socket应该将从主机接收的页面信息发送到被代理端.
(6).serversocket中的对应socket将页面数据发送到被代理端.
2. 程序编写
使用delphi设计以上通信过程非常简单,主要是serversocket.clientsocket的相关事
件驱动程序的程序编写.下面给出作者编写的实验用代理服务器界面与源程序清单,内含简要功能说明:
unit main;
interface
uses
windows, messages, sysutils, classes, graphics, controls, forms, dialogs,
extctrls, scktcomp, trayicon, menus, stdctrls;
type
session_record=record
used: boolean; {会话记录是否可用}
ss_handle: integer; {代理服务器套接字句柄}
csocket: tclientsocket; {用于连接远程的套接字}
lookingup: boolean; {是否正在查找服务器} ...
下一页 摘要: 在delphi数据库应用程序中,我们访问数据库通常有两种方法.一种是通过bde数据库搜索引擎,即利用delphi自带的数据库驱动程序,这种方法的优点是速度快,但应用范围有限,当数据库版本更新时,有可能不能用于操作新的数据库;另一种方法是通过odbc,这种方法的优点是可以随操作系统(如windows)提供,作为标准接口能适应多种数据库,缺点是速度慢.在编程时,我们可以根据需要选择其中的一种方法.......