我通过使用猫进行拨号,使得双方机器进行连接,双方机器连通后,再通过winsock进行数据传输。我该如何建立拨号连接?在程序中拨通了对方的号码后,对方如何通过VB编写的程序与我接通呢?接通后,数据传输完毕,又如何通过程序进行挂断呢?
请教各位大虾,急!急!急!!!!!!最好能提供源代码!!!!!!!!!!

解决方案 »

  1.   

    使用MsComm控件,向于串口连接的Modem发送相应的AT命令
      

  2.   

    我也在找类似的资料,你的问题应该用at指令可以解决。在窗体中加一个mscomm控件,端口号设置成modem的端口,窗体加载时mscomm1.openprot=true
    把你的at指令发给modem,如: mscomm1.output="atdt163" + vbcr
    你的这些问题都可以用at指令完成,找一个at指令的说明就可以了,如果有好的资料给我一份我在做语音自动应答和录音程序
      

  3.   

    各位大虾能不能说得再详细一些呢!如果用Ras如何实现呢?
      

  4.   

    你是说建立TCP连接吧,另一端用 拨号网络服务器 好了.
      

  5.   

    看看这个例子,实现了连接。
    传输文件,办法很多了。想怎么传就怎么传了。
    利用RAS调用在VB6.0中实现拨号上网 
       我们常用的软件如:JETCAR(现在为FLASHGET),GO!ZILLA等都具有拨号上网功能。那么,如何在自己编写的应用程序中也实现上述的功能呢?本文就利用RAS调用介绍在自己编写的应用程序如何实现拨号上网。  一.与拨号网络有关的结构和函数  1.RASDIALPARAMS95结构.其定义如下: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   其中,dwSize表示该结构的大小(以字节为单位)。szEntryName表示一个远程访问的入口名,也就是WINDOWS下的拨号网络中的连接图标小的文字;szEntryName参数可是是空串,表示仅与第一个有效的MODEM建立远程连接。szPhoneNumber为表示呼叫的号码。当szEntryName是空时,zPhoneNumber不能为空。szCallbackNumber表示回叫号码,一般都设为空。szUserName为建立远程访问的用户名。szPassword为建立远程访问的密码。szDomain为进行远程访问用户名和密码认证的域名。我们将szDomain设为空,表示远程访问的服务器也是该域名下的成员。
      

  6.   

    2.RASDIAL函数.其API声明为:Public Declare Function RasDial Lib "RasApi32.DLL" Alias "RasDialA" (lpRasDialExtensions As Any, ByVal lpszPhonebook As String, lprasdialparams As Any, ByVal dwNotifierType As Long, lpvNotifier As Long, lphRasConn As Long) As Long   RASDIAL函数用于建立RAS客户机和RAS服务器的连接。  各参数解释如下:   lpRasDialExtensions参数在WINDOWS95/98下被忽略。   lpszPhonebook参数在WINDOWS95/98下也被忽略。   lprasdialparams参数是指向一个含有RAS连接参数值的RASDIALPARAMS结构变量。  dwNotifierType参数用于指出参数lpvNotifier的性质。若lpvNotifier 为NULL,则dwNotifierType的值被忽略;若lpvNotifier不为NULL,则dwNotifierType应该为下列值之一:  (1).0XFFFFFFFF------指出lpvNotifier参数是一个接收进程通知消息的窗口句柄;  (2).0----------------指出lpvNotifier指向一个RASDIALFUNC回调函数;  (3).1----------------指出lpvNotifier指向下一个RASDIALFUNC1回调函数。  lpvNotifier参数用于指向一个接收RASDIAL事件通知的窗口或者回调函数,其性质由dwNotifierType参数决定:  (1).若lpvNotifier不NULL,表示是异步通信。即RASDIAL会对每个事件发送一个窗口消息或者调用回调函数。RASDIAL函数会立即返回,它通过窗口或者调用回调函数建立连接,与进程通信。  (2).若lpvNotifier是NULL,表示同步通信。即RASDIAL函数在连接建立完成或者失败后才会返回。  lphRasConn参数指向HRASCONN变量,必须先将lphRasConn设置为NULL,然后再调用RASDIAL函数。如果RASDIAL函数调用成功,lphRasconn会放置一个RAS连接句柄。  3.RASHANGUP函数.其API声明为:Public Declare Function RasHangUp Lib "RasApi32.DLL" Alias "RasHangUpA" (ByVal hRasConn As Long) As Long   RASHANGUP函数用于断开一个RAS连接。其参数hRasConn为指向一个RAS连接的句柄。  二.用VB6.0实现RAS拨号上网过程。  新建一个工程,取名为RasDial;然后在该工程中加入如下项目:  1.新建一个窗体Form1,然后在该窗体中加入如下组件:    ("连接"按钮取名为Ras_Dial,"挂断"按钮取名为:Ras_HangUp,"退出"按钮取名为:"Cancel".   3个文本框分别取名为:PhoneNumber,UserName,PassWord.)
      

  7.   

    2.双击连接按钮,加入如下代码:Private Sub Ras_Dial_Click()
    Dim temp As Long
    If PhoneNumber.Text = "" Or UserName.Text = "" Or PassWord.Text = "" Then
    temp = MsgBox("您没有输入有效的拨号网络参数。", vbOKOnly, "错误")
    Exit Sub
    End If
    temp = AddConnection("", PhoneNumber.Text, "", UserName.Text, PassWord.Text, "")
    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
    3.双击挂断按钮,加入如下代码:
    Private Sub Ras_HangUp_Click()
    Dim temp As Long
    temp = RasHangUp(hRasConn)
    End Sub
    4.双击退出按钮,加入如下代码:
    Private Sub Cancel_Click()
    Unload Me
    End Sub
    5.最后,新建一个模块,取名为Ras_Dial,加入如下代码:
    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, 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 IntegerDim 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, ByVal APINULL, 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   6.最后,编译生成应用程序,我们就实现了在自己的应用程序中拨号上网。本程序在PWIN98,VB6.0环境下编译通过。