如何从服务器上读取信息?(100分)

  • 主题发起人 主题发起人 MicroZeng
  • 开始时间 开始时间
M

MicroZeng

Unregistered / Unconfirmed
GUEST, unregistred user!
象oicq那样,服务器的操作系统是Linux+MySQL,在客户端(win98),要读取
数据库里的信息。比如,让用户输入用户名后和口令后,我要从服务器上读
取口令来验证一下是否正确,应该怎么做比较好?
客户端使用(delphi或者c++ Builder编程)
 
icq好象有现成的东东。
 
我的想法是在服务器上放一些象CGI一样的一些可执行程序,客户端通过参数来调用
这些程序,读取返回的结果就可以了。

但是这样要如何调用这些服务器的程序呢?
其实现在这样的例子很多,象oicq, icq, 网络游戏等等软件都需要这样的功能。
但是我确实不知道如何实现。
请各位大虾帮忙。
 
建议用三层结构来编程,编一个中间层服务器(我一般用MTS技术).
在服务器方建好存放数据的表
在客户方输入用户名和口令后用编写好的中间层服务程序查询服务器上的数据,
看是否能找到相应的数据.
在中间层服务器上放置SimpleObjectBroker,dcomConnection,ClientDateSet.
 
做三层数据库是可行的,要想通过参数得到结果,得在中间层的接口中添加一个方法
 
在BDE设置好的前提下,将SimpleObjectBroker.Server设为本地;
dcomConnection.ServerName设为"中间层.方法";
可以称之为中间层接口中的方法,其实就是一个非常简单的查询方法.
functionn Query(用户名,口令): Boolean;
 
我的想法要简单一些, 也不想涉及到数据库的操作,
其实,我可以在服务器上放一些小cgi,
调用的方法如下:
http://10.1.1.5/cgi-bin/sp/query.cgi?username=abc&passwd=123
这样, 这个cgi回返回查询的结果,但是我如果在windows下,调用它
shellexecute(Handle, nil,
pchar('http://10.1.1.5/cgi-bin/sp/query.cgi?username=abc&passwd=123'),
nil, nil, SW_HIDE);
这时, 虽然能够得出正确的结果,但是这个结果是在IE浏览器里面显示出来的。

我现在的问题是这样:
<font color=red>如果在程序里面接收这个cgi返回的参数, 而不让它们显示在IE浏览其中?</font>

还有另外一种方法,就是使用socket, 这种方法肯定可行,但是有一个安全的问题
就是我要在服务器上查询MYSQL的时候, 肯定需要使用密码, 这个密码很容易泄漏
出去, 所有我不想使用这种方法。

前面几位大虾说的,使用三层数据库, 这样做把问题复杂化了。

 
如<font color =red>何</font>在程序里面接收这个cgi返回的参数, 而不让它们显示在IE浏览<font color=red>器</font>中?

刚才敲错了两个字。
 
var txt:string;
begin
nmhttp1.get('http://10.1.1.5/cgi-bin/sp/query.cgi?username=abc&passwd=123');
txt:=nmhttp1.body;
end;
 
感谢cAkk,你的方法解决了我的问题。

我现在有遇到一个问题,就是使用nnFTP下载download()时,下载的是一个
gif文件,但是下载到本端就不能打开了, 我使用cuteFTP来下载时,就没有
这个问题的存在,说明不是源文件的问题。
我怀疑是nnFTP这个构件在下载时,对这个文件进行了特别的处理。因为我
用UltraEdit打开下载后的文件和原来的文件,比较后,发现使用nnFTP下载
的文件多了00,即中间多了一个字节,但是文件总的的长度没有改变。

请问这是什么原因?是否是码制的问题。
如果要实验,可以直接使用delphi带的那个ftp的例子。


 
我看看再说吧
 
听起来很过瘾,不过,好象问题可以结束啦!尽管我还想继续听:-)
 
我试验了一下,没有问题呀!

pwin98+ delphi5.0 + Delphi 4.0的ftp demo + 自己写的一个ftpserver(用ICS带的ftp控件做的)

 
to cAkk:
我也说不出是那些问题,但是有的文件会出现错误,有的就不会,
我发给你一个文件,award1.gif,你试试看, 用nnFTP下载后打开
就会有问题了。真怪!
 
发到哪里了? 没收到. 请发到这里: cakk2000@163.net
 
好的, 已经发了
 
后退
顶部