p> 当今的时代是网络的时代,通过拨号连接实现计算机之间的相互通讯也成为一个热门的话题。在实际的开发过程中,你一定会遇到类似的问题:如何在pb中实现拨号连接,让一个远程的计算机通过拨号连接登录到系统的服务器中,并上传、下载或者读取其中的数据?
as16&32是我在网上碰到的,解决该问题最酷的一个pbl。
ras16&32简介
ras16&32是arthur hefti的catsoft公司的产品,完全free。在许多pb的网站都可以看到他的踪迹。它包含了16和32位的代码,可以自动适应16位和32位的平台。
该pbl包含了以下内容: ? n_ras_16。16位的拨号连接对象 ? n_ras_32。32位的拨号连接对象 ? w_help。帮助窗体, 有和作者联系的方法和版权声明等信息。 ? w_m_ras。主窗体。
函数简介
函 数 功 能 of_dial() 最重要的函数,功能?当然是拨号了 of_getmessagenr() 注册rasdialevent消息 of_errortext() 根据一个整型的错误号返回相应的错误信息 of_statustext() 返回当前连接的状态。 一个非常重要的函数, 让用户知道现在到底发生了什么事情。
使用说明
1. 电话号码
缺省地,该pbl要求用户使用phonebookentry来指定电话号码和连接参数,如果直接输入电话号码,它会毫不犹豫地弹出一个对话框“error no is 623.”. 而通常地,我们只想指定一个电话号码就和远程的服务器进行连接。解决的办法很简单,只需要修改of_dial()即可。
以下以n_ras_32为例子(n_ras_16类似):
打开of_dial()函数,可以看到以下代码
lstr_rdp.szentryname = as_entry
lstr_rdp.szphonenumber[1] = char(0) …
只要把这两行修改为:
lstr_rdp.szentryname[1] = char(0)
lstr_rdp.szphonenumber = as_entry …
ok!马上通过!
2. 域名
拨号连接成功后,如果必须进行身份验证,则要指定域名。该参数在连接的结构参数lstr_rdp中,ras16&32中给域赋的值是 szdomain = *星号表示域名保存在phonebookentry中,而我们现在使用了直接的电话号码连接,所以要区分以下三种情况:
服务器是独立的服务器。无须修改,可以进行正常的连接。但问题是,如果输入了错误的用户名和密码,则登录失败时系统没有任何提示。
服务器是域控制器。必须输入正确的域名。
》衿魇怯虺稍保皇侵饔蚩刂破鳌8掣桓隹沾?
3. 如何显示当前的连接状态
在主窗体的open事件中通过of_getmessagenr()注册了相应的消息,然后在窗体的other事件中捕获该消息并进行处理:
if message.number = iui_rasmsg then //iui_rasmsg是该消息的句柄
st_status.text = inv_ras.of_statustext( message.wordparm ) //通过of_statustext()显示该消息
end if
4. 连接成功后?
同样在窗体的other事件中处理。
在判断消息句柄是iui_rasmsg后,判断是否已经成功连接:
if message.number = iui_rasmsg then
if message.wordparm=8192 then <连接成功后的代码> //打开n_ras_16的of_getstatustext()可以看到 8192是成功连接的消息代码。
5. 其他要注意的问题
如果用户启动windows时登录了网络,则使用用户登录时的用户名和密码连接。而忽略在ras连接时指定的用户名和密码。这种情况应该避免。
如果用户启动windows时没有登录网络,则使用程序中指定的用户名和密码连接。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器