drunk 发表于 2010-3-6 13:18:09

我想问下,怎么判断我的某个vpn虚拟连接是否连接上啊

RT,“我想问下,怎么判断我的某个vpn虚拟连接是否连接上啊?”
在线等哦。
:face (13)::face (37):

drunk 发表于 2010-3-6 17:56:26

四小时过去了:face (31):

lxz 发表于 2010-3-6 19:26:15

我也想知道.....

llztt 发表于 2010-3-7 00:08:15

暂没想到正规的好办法,只好PING VPN服务器的IP吧(内网那个)或 查CMD 的ROUTER命令什么的吧(看回显有服务器地址没)

drunk 发表于 2010-3-7 10:58:13

17小时过去了:face (31):
真的没办法吗
router不太懂啊

tianya1631 发表于 2010-3-7 11:07:54

可以通过ping vpn对端的ip地址来判断,是否连接上。

drunk 发表于 2010-3-7 11:13:49

什么是对端ip啊,不明白,可以说详细点不,谢了:face (38):

llztt 发表于 2010-3-7 18:08:01

客户机连接VPN服务器后,会获得一个IP(内网的,一般192.168.*.*,看服务器怎么设置的了),对应服务器也有一个内网IP(看服务器怎么设置的,一般是IP段的第一个),所有客户机都依这个IP段成为一个小局域网,你可以用AU3看CMD回显(如是否获得IP或PING服务器IP通否),同样的可以看CMD的route print命令回显也行。。

上面的方法是下下之策,期待正规的办法

pusofalse 发表于 2010-3-7 21:56:08

#include <Array.au3>

Func _RasEnumConnections()
        Local $tBuffer, $pBuffer, $iSizeofBuffer, $tRasConn, $iResult, $aResult

        Local Const $tagRAS_CONNECTION= "dword Size;hWnd RasConnection;char EntryName;" & _
                        "char DeviceType;char DeviceName;char Pnebk;" & _
                        "dword SubEntry;byte EntryGuid;dword Flags;int Luid;ptr Correlation"

        $tBuffer = DllStructCreate($tagRAS_CONNECTION)
        $pBuffer = DllStructGetPtr($tBuffer)
        $iSizeofBuffer = DllStructGetSize($tBuffer)
        DllStructSetData($tBuffer, "Size", $iSizeofBuffer)
        $iResult = DllCall("Rasapi32.dll", "dword", "RasEnumConnections", _
                        "ptr", $pBuffer, "dword*", $iSizeofBuffer, "dword*", 0)
        $tBuffer = 0
        If ($iResult < 1) Then Return SetError(@error, 0, $aResult)

        If ($iResult = 1) Then
                $tBuffer = DllStructCreate($tagRAS_CONNECTION)
        Else
                $tBuffer = DllStructCreate($tagRAS_CONNECTION & ";byte Data[" & ($iResult - 1) *

$iSizeofBuffer & "]")
        EndIf
        DllStructSetData($tBuffer, "Size", $iSizeofBuffer)
        $iResult = DllCall("Rasapi32.dll", "dword", "RasEnumConnections", _
                        "ptr", $pBuffer, "dword*", $iSizeofBuffer * $iResult, "dword*", 0)
        If ($iResult) Then Return SetError($iResult, 0, $aResult)

        $aResult = $iResult
        Redim $aResult[$iResult + 1]
        For $i = 1 To $iResult
                $tRasConn = DllStructCreate($tagRAS_CONNECTION, $pBuffer)
                $aResult[$i] = DllStructGetData($tRasConn, "RasConnection")
                $aResult[$i] = DllStructGetData($tRasConn, "EntryName")
                $aResult[$i] = DllStructGetData($tRasConn, "DeviceType")
                $aResult[$i] = DllStructGetData($tRasConn, "DeviceName")
                $aResult[$i] = DllStructGetData($tRasConn, "Pnebk")
                $aResult[$i] = DllStructGetData($tRasConn, "SubEntry")
                $aResult[$i] = DllStructGetData($tRasConn, "Flags")
                $pBuffer += $iSizeofBuffer
        Next
        $tBuffer = 0
        Return $aResult
EndFunc        ;==>_RasEnumConnections

$aConnection = _RasEnumConnections()
_Arraydisplay($aConnection, @error)

drunk 发表于 2010-3-8 11:52:58

额,首先感谢楼上的大哥又费心思又费体力的敲了这么多
目前还没看懂,但我拿你的代码试了下
返回的数组里面没元素啊:face (32):

drunk 发表于 2010-3-8 12:08:16

哦    我在试了下
也不是完全没
我断开VPN就有了
一连VPN就没。
如果只有一个VPN连的话也算是可以判断了
页: [1]
查看完整版本: 我想问下,怎么判断我的某个vpn虚拟连接是否连接上啊