找回密码
 加入
搜索
查看: 4852|回复: 10

[网络通信] 我想问下,怎么判断我的某个vpn虚拟连接是否连接上啊

  [复制链接]
发表于 2010-3-6 13:18:09 | 显示全部楼层 |阅读模式
RT,“我想问下,怎么判断我的某个vpn虚拟连接是否连接上啊?”
在线等哦。
 楼主| 发表于 2010-3-6 17:56:26 | 显示全部楼层
四小时过去了
发表于 2010-3-6 19:26:15 | 显示全部楼层
我也想知道.....
发表于 2010-3-7 00:08:15 | 显示全部楼层
暂没想到正规的好办法,只好PING VPN服务器的IP吧(内网那个)或 查CMD 的ROUTER命令什么的吧(看回显有服务器地址没)
 楼主| 发表于 2010-3-7 10:58:13 | 显示全部楼层
17小时过去了
真的没办法吗
router不太懂啊
发表于 2010-3-7 11:07:54 | 显示全部楼层
可以通过ping vpn对端的ip地址来判断,是否连接上。
 楼主| 发表于 2010-3-7 11:13:49 | 显示全部楼层
什么是对端ip啊,不明白,可以说详细点不,谢了
发表于 2010-3-7 18:08:01 | 显示全部楼层
客户机连接VPN服务器后,会获得一个IP(内网的,一般192.168.*.*,看服务器怎么设置的了),对应服务器也有一个内网IP(看服务器怎么设置的,一般是IP段的第一个),所有客户机都依这个IP段成为一个小局域网,你可以用AU3看CMD回显(如是否获得IP或PING服务器IP通否),同样的可以看CMD的route print命令回显也行。。

上面的方法是下下之策,期待正规的办法
发表于 2010-3-7 21:56:08 | 显示全部楼层
#include <Array.au3>

Func _RasEnumConnections()
        Local $tBuffer, $pBuffer, $iSizeofBuffer, $tRasConn, $iResult, $aResult[1][7]

        Local Const $tagRAS_CONNECTION  = "dword Size;hWnd RasConnection;char EntryName[257];" & _
                        "char DeviceType[17];char DeviceName[129];char Pnebk[260];" & _
                        "dword SubEntry;byte EntryGuid[16];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[3] < 1) Then Return SetError(@error, 0, $aResult)

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

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

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

$aConnection = _RasEnumConnections()
_Arraydisplay($aConnection, @error)
 楼主| 发表于 2010-3-8 11:52:58 | 显示全部楼层
额,首先感谢楼上的大哥又费心思又费体力的敲了这么多
目前还没看懂,但我拿你的代码试了下
返回的数组里面没元素啊
 楼主| 发表于 2010-3-8 12:08:16 | 显示全部楼层
哦    我在试了下
也不是完全没
我断开VPN就有了
一连VPN就没。
如果只有一个VPN连的话也算是可以判断了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-16 02:21 , Processed in 0.089406 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表