CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  网络编程

如何实现拨号(在线等待)

楼主coolskeeter(文子)2003-09-02 17:44:29 在 VB / 网络编程 提问

以下的这个例子,尝试失败。  
  我这里是win2000的系统。  
  请问:  
  Dim   lprasdialparams   As   RASDIALPARAMS95  
  lprasdialparams.dwSize   =   1052   '在WINDOWS95/98中必须将dwSize设为1052  
  以上是WINDOWS95/98的设置,2000该如何修改呢?  
   
  回复人:   gpo2002(永吹不休)   (   )   信誉:105     2003-7-27   16:06:47     得分:50    
     
     
       
  不用mscomm32.ocx  
   
  转贴:  
   
   
   
  以下代码在2k中调试通过!  
   
   
   
  '以下在form1,需两个command  
   
   
   
  Option   Explicit  
   
   
   
  Private   Sub   Form_Load()  
   
  Command1.Caption   =   "连接"  
   
  Command2.Caption   =   "挂断"  
   
  End   Sub  
   
   
   
  Private   Sub   Command1_Click()  
   
  Dim   PhoneNum   As   String,   UserName   As   String,   PassWord   As   String,   temp   As   Long  
   
   
   
  PhoneNum   =   "163"   '指定电话号码  
   
  UserName   =   "163"   '指定用户名  
   
  PassWord   =   "163"   '指定密码  
   
   
   
  temp   =   AddConnection("",   PhoneNum,   "",   UserName,   PassWord,   "")  
   
   
   
  Select   Case   temp  
   
  Case   ERROR_PORT_ALREADY_OPEN:   temp   =   MsgBox("错误,端口已经打开!",   vbOKOnly,   "Error")  
   
  Case   ERROR_UNKNOWN:   temp   =   MsgBox("未知的错误!",   vbOKOnly,   "Error")  
   
  Case   ERROR_REQUEST_TIMEOUT:   temp   =   MsgBox("错误,请求超时!",   vbOKOnly,   "Error")  
   
  Case   ERROR_PASSWD_EXPIRED:   temp   =   MsgBox("错误,您没有输入密码!",   vbOKOnly,   "Error")  
   
  Case   ERROR_NO_DIALIN_PERMISSION:   temp   =   MsgBox("错误,没有拨号音!",   vbOKOnly,   "Error")  
   
  Case   ERROR_SERVER_NOT_RESPONDING:   temp   =   MsgBox("错误,拨入的远程计算机没有响应!",   vbOKOnly,   "Error")  
   
  Case   ERROR_UNRECOGNIZED_RESPONSE:   temp   =   MsgBox("错误,未知的响应!",   vbOKOnly,   "Error")  
   
  Case   ERROR_NO_RESPONSES:   temp   =   MsgBox("错误,没有响应!",   vbOKOnly,   "Error")  
   
  Case   ERROR_DEVICE_NOT_READY:   temp   =   MsgBox("错误,设备没有准备好!",   vbOKOnly,   "Error")  
   
  Case   ERROR_LINE_BUSY:   temp   =   MsgBox("错误,占线!",   vbOKOnly,   "Error")  
   
  Case   ERROR_NO_ANSWER:   temp   =   MsgBox("错误,没有应答信号!",   vbOKOnly,   "Error")  
   
  Case   ERROR_NO_CARRIER:   temp   =   MsgBox("错误,没有载波信号!",   vbOKOnly,   "Error")  
   
  Case   ERROR_NO_DIALTONE:   temp   =   MsgBox("错误,没有拨号音!",   vbOKOnly,   "Error")  
   
  Case   ERROR_AUTHENTICATION_FAILURE:   temp   =   MsgBox("用户名密码出错!",   vbOKOnly,   "Error")  
   
  Case   ERROR_PPP_TIMEOUT:   temp   =   MsgBox("PPP接入超时。",   vbOKOnly,   "Error")  
   
  End   Select  
   
  End   Sub  
   
   
   
  Private   Sub   Command2_Click()  
   
  RasHangUp   hRasConn  
   
  End   Sub  
   
   
   
   
   
  以下在.bas  
   
   
   
  Option   Explicit  
   
  Public   hRasConn   As   Long   '定义一个指向RAS调用的全局句柄  
   
  Public   Const   APINULL   =   0&  
   
  Public   Const   UNLEN   =   256  
   
  Public   Const   DNLEN   =   15  
   
  Public   Const   PWLEN   =   256  
   
  Public   Const   RAS95_MaxPhoneNumber   =   128  
   
  Public   Const   RAS95_MaxEntryName   =   256  
   
  Public   Const   RAS95_MaxCallbackNumber   =   RAS95_MaxPhoneNumber  
   
  Public   Type   RASDIALPARAMS95  
   
  dwSize   As   Long  
   
  szEntryName(RAS95_MaxEntryName)   As   Byte  
   
  szPhoneNumber(RAS95_MaxPhoneNumber)   As   Byte  
   
  szCallbackNumber(RAS95_MaxCallbackNumber)   As   Byte  
   
  szUserName(UNLEN)   As   Byte  
   
  szPassword(PWLEN)   As   Byte  
   
  szDomain(DNLEN)   As   Byte  
   
  End   Type  
   
  '**********************************  
   
  '*   RAS调用错误代号   *  
   
  '**********************************  
   
  Public   Const   NOT_SUPPORTED   =   120&  
   
  Public   Const   RASBASEERROR   =   600&  
   
  Public   Const   SUCCESS   =   0&  
   
  Public   Const   ERROR_PORT_ALREADY_OPEN   =   (RASBASEERROR   +   2)  
   
  Public   Const   ERROR_UNKNOWN   =   (RASBASEERROR   +   35)  
   
  Public   Const   ERROR_REQUEST_TIMEOUT   =   (RASBASEERROR   +   38)  
   
  Public   Const   ERROR_PASSWD_EXPIRED   =   (RASBASEERROR   +   48)  
   
  Public   Const   ERROR_NO_DIALIN_PERMISSION   =   (RASBASEERROR   +   49)  
   
  Public   Const   ERROR_SERVER_NOT_RESPONDING   =   (RASBASEERROR   +   50)  
   
  Public   Const   ERROR_UNRECOGNIZED_RESPONSE   =   (RASBASEERROR   +   52)  
   
  Public   Const   ERROR_NO_RESPONSES   =   (RASBASEERROR   +   60)  
   
  Public   Const   ERROR_DEVICE_NOT_READY   =   (RASBASEERROR   +   66)  
   
  Public   Const   ERROR_LINE_BUSY   =   (RASBASEERROR   +   76)  
   
  Public   Const   ERROR_NO_ANSWER   =   (RASBASEERROR   +   78)  
   
  Public   Const   ERROR_NO_CARRIER   =   (RASBASEERROR   +   79)  
   
  Public   Const   ERROR_NO_DIALTONE   =   (RASBASEERROR   +   80)  
   
  Public   Const   ERROR_AUTHENTICATION_FAILURE   =   (RASBASEERROR   +   91)  
   
  Public   Const   ERROR_PPP_TIMEOUT   =   (RASBASEERROR   +   118)  
   
  '**********************************  
   
  '*   RAS   API   声明   *  
   
  '**********************************  
   
  Public   Declare   Function   lstrcpy   Lib   "kernel32"   Alias   "lstrcpyA"   (lpString1   As   Any,   ByVal   lpString2   As   String)   As   Long  
   
  Public   Declare   Function   RasDial   Lib   "RasApi32.DLL"   Alias   "RasDialA"   (lpRasDialExtensions   As   Any,   ByVal   lpszPhonebook   As   String,   lprasdialparams   As   Any,   ByVal   dwNotifierType   As   Long,   ByVal   lpvNotifier   As   Long,   lphRasConn   As   Long)   As   Long  
   
  Public   Declare   Function   RasHangUp   Lib   "RasApi32.DLL"   Alias   "RasHangUpA"   (ByVal   hRasConn   As   Long)   As   Long  
   
  Public   Function   AddConnection(strNewEntryName   As   String,   strNewPhoneNumber   As   String,   strNewCallbackNumber   As   String,   strNewUsername   As   String,   strNewPassword   As   String,   strNewDomain   As   String)   As   Integer  
   
   
   
  Dim   lngRetCode   As   Long  
   
  Dim   lngRetLstrcpy   As   Long  
   
  Dim   lngRetHangUp   As   Long  
   
  Dim   lprasdialparams   As   RASDIALPARAMS95  
   
  lprasdialparams.dwSize   =   1052   '在WINDOWS95/98中必须将dwSize设为1052  
   
  '利用lstrcpy函数将字符串拷贝到BYTE数组  
   
  lngRetLstrcpy   =   lstrcpy(lprasdialparams.szEntryName(0),   strNewEntryName)  
   
  lngRetLstrcpy   =   lstrcpy(lprasdialparams.szPhoneNumber(0),   strNewPhoneNumber)  
   
  lngRetLstrcpy   =   lstrcpy(lprasdialparams.szCallbackNumber(0),   strNewCallbackNumber)  
   
  lngRetLstrcpy   =   lstrcpy(lprasdialparams.szUserName(0),   strNewUsername)  
   
  lngRetLstrcpy   =   lstrcpy(lprasdialparams.szPassword(0),   strNewPassword)  
   
  lngRetLstrcpy   =   lstrcpy(lprasdialparams.szDomain(0),   strNewDomain)  
   
  '我们使用异步通信  
   
  Screen.MousePointer   =   vbHourglass  
   
  hRasConn   =   0   '  
   
  lngRetCode   =   RasDial(ByVal   APINULL,   vbNullString,   lprasdialparams,   APINULL,   AddressOf   RasDialFunc,   hRasConn)  
   
  Screen.MousePointer   =   vbDefault  
   
  '测试有没有错误  
   
  If   lngRetCode   Then  
   
  lngRetHangUp   =   RasHangUp(hRasConn)  
   
  End   If  
   
  AddConnection   =   lngRetCode  
   
  End   Function  
   
  Public   Sub   RemoveConnection(H_RasConn   As   Long)  
   
  Call   RasHangUp(hRasConn)  
   
  End   Sub  
   
   
   
  Public   Sub   RasDialFunc(ByVal   unMsg   As   Long,   ByVal   ConnState   As   Long,   ByVal   dwError   As   Long)  
   
      If   ConnState   =   &H2000   Then  
   
            Debug.Print   "拨号成功!"  
   
      End   If  
   
   
   
  End   Sub  
   
   
   
   
   
       
     
  问题点数:100、回复次数:18Top

1 楼wingchi(期待第十五个五年计划)回复于 2003-09-02 18:46:24 得分 10

不会     帮你upTop

2 楼coolskeeter(文子)回复于 2003-09-03 12:43:19 得分 0

upTop

3 楼hxy2003(asfd)回复于 2003-09-03 13:52:45 得分 10

upTop

4 楼agamem(O-Money)回复于 2003-09-03 14:28:55 得分 10

厉害!我去年的代码也翻出来了,等会帮你看看Top

5 楼agamem(O-Money)回复于 2003-09-03 14:35:50 得分 10

我在2000下有的很好,你看一下len(RASDIALPARAMS95)是多少,把这个值给他试一试Top

6 楼coolskeeter(文子)回复于 2003-09-05 09:15:12 得分 0

请教,那我怎们确定,拨号是否成功呢?是否能从控制面板或者哪里能看出来?Top

7 楼mndsoft(枕善居(http://www.mndsoft.com/)回复于 2003-09-05 16:18:20 得分 10

通过modem拨号的问题我已经解决,包括检测是否成功及所有连接出错的信息检测,我可以把代码发送给您。  
  但是用adsl拨号的问题,至今无法解决,只有用第三方控件Catalyst   SocketWrench,效果还可以,但是我很想用api来控制,我查了rasapi32.dll中封装的函数,但苦于一些参数没有办法知道,希望朋友能帮助。  
  我的e-mail:mndsoft@china-huahang.com  
  qq:88382850Top

8 楼coolskeeter(文子)回复于 2003-09-05 17:12:18 得分 0

len(RASDIALPARAMS95)编译不通。  
   
  Dim   lprasdialparams   As   RASDIALPARAMS95  
  lprasdialparams.dwSize   =   Len(lprasdialparams)  
  这样报错:RasDial=632  
  我查了一下:632是ERROR_INVALID_SIZE(The   structure   size   is   incorrect.%0)  
  参见:RASERROR.H  
   
  急救!!!!Top

9 楼yijiansong(不知路在何方)回复于 2003-09-05 17:16:36 得分 10

UPTop

10 楼Gelim(Gelim)回复于 2003-09-06 10:13:55 得分 10

我有个程序,你给油箱给我!  
  Top

11 楼hgnan(搞IT的民工)回复于 2003-09-06 11:43:21 得分 5

在vb   中         shell   autoppp.bat  
   
  autoppp.bat   文件容如下  
   
  rasdial   adsl   "user"   "password"  
  @if   errorlevel   638     then       成功  
  @if   errorlevel   691     then       失败  
  :end1    
   
  adsl   是在拨号连接建立好的连接名   。     可以是ppp   也可以是pppoe  
  rasdial   命令的使用可以参见   windows   网上邻居   的帮助。Top

12 楼coolskeeter(文子)回复于 2003-09-12 08:52:32 得分 0

email:tanxin@necsi.nec.com.cn  
  VB的拨号还有没有办法啊?急啊!  
   
  我这里是ISDN拨号连接,你那个bat是否可以用?是不是那个“adsl”改成"ISDN"就行?  
   
  autoppp.bat   文件容如下:  
  rasdial   adsl   "user"   "password"  
  @if   errorlevel   638     then       成功  
  @if   errorlevel   691     then       失败  
  :end1    
  Top

13 楼coolskeeter(文子)回复于 2003-09-12 08:55:20 得分 0

ISDN拨号得输入电话号码,你这个bat里怎么没有电话号码?Top

14 楼xxcw(Puma)回复于 2003-09-16 17:31:23 得分 5

我也要做这样的软件,但无法实现,急!UpTop

15 楼ljcdeid(LJC)回复于 2003-09-16 19:23:41 得分 5

同时天涯沦落人,我也在做这样的软件,但到目前为止还没有找到合适的解决方法  
  特别关注!!!!  
  谁能帮我解决300分以上决不食言!  
  ljc-ljc@sohu.comTop

16 楼rednod(奋斗ing.......)回复于 2003-09-16 21:19:01 得分 5

弹出拨号连接来算不算。  
   
  这样我到知道,我就这样用的。  
  Top

17 楼xxcw(Puma)回复于 2003-09-16 22:05:37 得分 5

弹出拔号连接,能输入用户名,密码及电话号码也不错。  
  zw.net@163.comTop

18 楼FUNDGIRL(阿弥陀佛(别抢我分,谢谢))回复于 2003-09-19 00:02:38 得分 5

哈哈.  
   
  要不要拿出PPPOE协议资料看看?  
   
  自己写个拨号软件??Top

相关问题

  • 在线等待:怎么样才能实现一键搞定拨号到另一台ftp服务器?
  • 在线等待,顶者有分:JNI问题(怎样用JNI实现自动拨号功能?)
  • 在线等待,顶者有分:JNI问题(怎样用JNI实现自动拨号功能?)
  • 在线等待!!NT 不能拨号登录163?什么原因?
  • 关于拨号程序的问题,在线等待,急!!200分
  • Erwin的modelmart??? 201拨号上网在线等待
  • TP-LINK TL-R860 拨号拨不上去 急 在线等待!
  • >>>>>>>>>>>>>>>>>>>紧急:拨号线路上实现TCP/IP,进者有分!
  • 怎样实现查询?---在线等待
  • vb中的拨号上网控件是哪一个?(在线等待)

关键词

  • adsl
  • 连接
  • 代码
  • 密码
  • 解决
  • 拨号
  • rasdialparams95
  • lprasdialparams
  • vbokonly
  • rasdial

得分解答快速导航

  • 帖主:coolskeeter
  • wingchi
  • hxy2003
  • agamem
  • agamem
  • mndsoft
  • yijiansong
  • Gelim
  • hgnan
  • xxcw
  • ljcdeid
  • rednod
  • xxcw
  • FUNDGIRL

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo