当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 笔者在编写一个上网计费软件时,涉及到如何对局域网中各工作站上网计费问题。
 

 

 ·用delphi实现图形化批量ip检测    »显示摘要«
    摘要:作者:广东南海市公安局计算机安全监察股 喻凯 当要检测的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)提供,作为标准接口能适应多种数据库,缺点是速度慢.在编程时,我们可以根据需要选择其中的一种方法.......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE