如果是檢查winsock的連接狀態(tài)可以用,if winsock1.state=*
大余ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!
sckClosed 0 缺省的。關(guān)閉
sckOpen 1 打開
sckListening 2 偵聽
sckConnectionPending 3 連接掛起
sckResolvingHost 4 識(shí)別主機(jī)
sckHostResolved 5 已識(shí)別主機(jī)
sckConnecting 6 正在連接
sckConnected 7 已連接
sckClosing 8 同級(jí)人員正在關(guān)閉連接
sckError 9 錯(cuò)誤
*值得就是上述值的一個(gè),然后在后面添加代碼!例如要判斷時(shí)候關(guān)閉,就可以
if winsock1.state=0 then msgbox "未連接!"
這樣的沒有連接就會(huì)彈出對(duì)話框了
首先添加一模塊,代碼如下
Option Explicit
Private Const IP_SUCCESS As Long = 0
Private Const IP_STATUS_BASE As Long = 11000
Private Const IP_BUF_TOO_SMALL As Long = (11000 + 1)
Private Const IP_DEST_NET_UNREACHABLE As Long = (11000 + 2)
Private Const IP_DEST_HOST_UNREACHABLE As Long = (11000 + 3)
Private Const IP_DEST_PROT_UNREACHABLE As Long = (11000 + 4)
Private Const IP_DEST_PORT_UNREACHABLE As Long = (11000 + 5)
Private Const IP_NO_RESOURCES As Long = (11000 + 6)
Private Const IP_BAD_OPTION As Long = (11000 + 7)
Private Const IP_HW_ERROR As Long = (11000 + 8)
Private Const IP_PACKET_TOO_BIG As Long = (11000 + 9)
Private Const IP_REQ_TIMED_OUT As Long = (11000 + 10)
Private Const IP_BAD_REQ As Long = (11000 + 11)
Private Const IP_BAD_ROUTE As Long = (11000 + 12)
Private Const IP_TTL_EXPIRED_TRANSIT As Long = (11000 + 13)
Private Const IP_TTL_EXPIRED_REASSEM As Long = (11000 + 14)
Private Const IP_PARAM_PROBLEM As Long = (11000 + 15)
Private Const IP_SOURCE_QUENCH As Long = (11000 + 16)
Private Const IP_OPTION_TOO_BIG As Long = (11000 + 17)
Private Const IP_BAD_DESTINATION As Long = (11000 + 18)
Private Const IP_ADDR_DELETED As Long = (11000 + 19)
Private Const IP_SPEC_MTU_CHANGE As Long = (11000 + 20)
Private Const IP_MTU_CHANGE As Long = (11000 + 21)
Private Const IP_UNLOAD As Long = (11000 + 22)
Private Const IP_ADDR_ADDED As Long = (11000 + 23)
Private Const IP_GENERAL_FAILURE As Long = (11000 + 50)
Private Const MAX_IP_STATUS As Long = (11000 + 50)
Private Const IP_PENDING As Long = (11000 + 255)
Private Const PING_TIMEOUT As Long = 500
Private Const WS_VERSION_REQD As Long = H101
Private Const MIN_SOCKETS_REQD As Long = 1
Private Const SOCKET_ERROR As Long = -1
Private Const INADDR_NONE As Long = HFFFFFFFF
Private Const MAX_WSADescription As Long = 256
Private Const MAX_WSASYSStatus As Long = 128
Public PingTime As Long
Private Type ICMP_OPTIONS
Ttl As Byte
Tos As Byte
Flags As Byte
OptionsSize As Byte
OptionsData As Long
End Type
Private Type ICMP_ECHO_REPLY
Address As Long
status As Long
RoundTripTime As Long
DataSize As Long
DataPointer As Long
Options As ICMP_OPTIONS
Data As String * 250
End Type
Private Type WSADATA
wVersion As Integer
wHighVersion As Integer
szDescription(0 To MAX_WSADescription) As Byte
szSystemStatus(0 To MAX_WSASYSStatus) As Byte
wMaxSockets As Long
wMaxUDPDG As Long
dwVendorInfo As Long
End Type
Public Declare Function timeGetTime Lib "winmm.dll" () As Long
Private Declare Function WSAStartup Lib "wsock32" (ByVal wVersionRequired As Long, lpWSADATA As WSADATA) As Long
Private Declare Function WSACleanup Lib "wsock32" () As Long
Private Declare Function IcmpCreateFile Lib "icmp.dll" () As Long
Private Declare Function inet_addr Lib "wsock32" (ByVal s As String) As Long
Private Declare Function IcmpCloseHandle Lib "icmp.dll" (ByVal IcmpHandle As Long) As Long
Private Declare Function IcmpSendEcho Lib "icmp.dll" (ByVal IcmpHandle As Long, ByVal DestinationAddress As Long, ByVal RequestData As String, ByVal RequestSize As Long, ByVal RequestOptions As Long, ReplyBuffer As ICMP_ECHO_REPLY, ByVal ReplySize As Long, ByVal Timeout As Long) As Long
'Private Declare Function WSAGetLastError Lib "wsock32" () As Long
'Private Declare Function gethostname Lib "wsock32" (ByVal szHost As String, ByVal dwHostLen As Long) As Long
'Private Declare Function gethostbyname Lib "wsock32" (ByVal szHost As String) As Long
'Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (xDest As Any, xSource As Any, ByVal nbytes As Long)
Private Function GetStatusCode(status As Long) As String
On Error GoTo ErrLine
Dim Msg As String
GetStatusCode = ""
Select Case status
Case IP_SUCCESS: Msg = "ip success"
Case INADDR_NONE: Msg = "inet_addr: bad IP format"
Case IP_BUF_TOO_SMALL: Msg = "ip buf too_small"
Case IP_DEST_NET_UNREACHABLE: Msg = "ip dest net unreachable"
Case IP_DEST_HOST_UNREACHABLE: Msg = "ip dest host unreachable"
Case IP_DEST_PROT_UNREACHABLE: Msg = "ip dest port unreachable"
Case IP_DEST_PORT_UNREACHABLE: Msg = "ip dest port unreachable"
Case IP_NO_RESOURCES: Msg = "ip no resources"
Case IP_BAD_OPTION: Msg = "ip bad option"
Case IP_HW_ERROR: Msg = "ip hw_error"
Case IP_PACKET_TOO_BIG: Msg = "ip packet too_big"
Case IP_REQ_TIMED_OUT: Msg = "ip req timed out"
Case IP_BAD_REQ: Msg = "ip bad req"
Case IP_BAD_ROUTE: Msg = "ip bad route"
Case IP_TTL_EXPIRED_TRANSIT: Msg = "ip ttl expired transit"
Case IP_TTL_EXPIRED_REASSEM: Msg = "ip ttl expired reassem"
Case IP_PARAM_PROBLEM: Msg = "ip param_problem"
Case IP_SOURCE_QUENCH: Msg = "ip source quench"
Case IP_OPTION_TOO_BIG: Msg = "ip option too_big"
Case IP_BAD_DESTINATION: Msg = "ip bad destination"
Case IP_ADDR_DELETED: Msg = "ip addr deleted"
Case IP_SPEC_MTU_CHANGE: Msg = "ip spec mtu change"
Case IP_MTU_CHANGE: Msg = "ip mtu_change"
Case IP_UNLOAD: Msg = "ip unload"
Case IP_ADDR_ADDED: Msg = "ip addr added"
Case IP_GENERAL_FAILURE: Msg = "ip general failure"
Case IP_PENDING: Msg = "ip pending"
Case PING_TIMEOUT: Msg = "ping timeout"
Case Else: Msg = "unknown msg returned"
End Select
GetStatusCode = Msg
Exit Function
ErrLine:
End Function
Private Function Ping(sAddress As String, sDataToSend As String, ECHO As ICMP_ECHO_REPLY) As Long
On Error GoTo ErrLine
Dim hPort As Long
Dim dwAddress As Long
dwAddress = inet_addr(sAddress)
If dwAddress INADDR_NONE Then
hPort = IcmpCreateFile()
If hPort Then
Call IcmpSendEcho(hPort, dwAddress, sDataToSend, Len(sDataToSend), 0, ECHO, Len(ECHO), PING_TIMEOUT)
Ping = ECHO.status
Call IcmpCloseHandle(hPort)
End If
Else
Ping = INADDR_NONE
End If
Exit Function
ErrLine:
Ping = INADDR_NONE
End Function
Public Function PingIP(ByVal szIp As String) As Boolean
On Error GoTo ErrLine
Dim WSAD As WSADATA
Dim ECHO As ICMP_ECHO_REPLY
Dim ret As Long
'Delay 150
PingIP = False
PingTime = Empty
If WSAStartup(WS_VERSION_REQD, WSAD) = IP_SUCCESS Then
ret = Ping(Trim(szIp), "tanaya", ECHO)
PingTime = ECHO.RoundTripTime
If InStr(1, GetStatusCode(ret), "success") 0 Then
WSACleanup
PingIP = True
PingTime = ECHO.RoundTripTime
Exit Function
End If
End If
Exit Function
ErrLine:
End Function
然后建立一窗體,一command
Private Sub Command1_Click()
If PingIP("你需要訪問的ip") = True Then
'你自己增加需要執(zhí)行的代碼
else
'增加不聯(lián)網(wǎng)時(shí)需要執(zhí)行的代碼
end if
Private Declare Function PathFileExists Lib "shlwapi.dll" Alias "PathFileExistsA" (ByVal pszPath As String) As Long
這是封裝在Shell32.DLL系統(tǒng)文件里的一個(gè)函數(shù),既可以判斷本地文件是否存在,又可以判斷遠(yuǎn)程電腦上的文件是否存在。函數(shù)返回值是個(gè)Long型變量,返回兩個(gè)值0,1。1表示文件存在(True),0表示文件不存在(False)。而且只有一個(gè)參數(shù)szPath,是個(gè)字符串變量,如果要判斷本地的文件是否存在其路徑可寫為:”C:\Windows\Config\SysBook.Txt”),如果文件在遠(yuǎn)程電腦上,其路徑可寫為(假設(shè)對(duì)方電腦IP為192.168.0.2)
"\\192.168.0.2\d$\javatools\somefile.txt",如果其電腦名為WorkStation可寫為
“\\workstation\javatools\somefile.txt",當(dāng)然這個(gè)函數(shù)還可以查找網(wǎng)站上的網(wǎng)頁文件如:""
我們可以寫個(gè)簡單的自定義公用函數(shù)來完成這個(gè)功能,在自定義函數(shù)里調(diào)用這個(gè)API函數(shù)
Public Function GetFileExists(ByVal FileName As String) As Boolean
If FileName = "" Then
MsgBox "請(qǐng)輸入文件名", vbInformation, "提示"
Exit Function
Else
GetFileExists = CBool(PathFileExists(FileName))
End If
End Function
在窗體界面上加一按鈕,和一文本框
Private Sub Command1_Click()
Dim T As Boolean
T = GetFileExists("F:\it\Develope\Retail\Bill\vssver.scc")
If T = True Then
Text1.Text = "該文件存在"
Else
Text1.Text = "該文件不存在"
End If
End Sub
當(dāng)然GetFileExists其中的參數(shù)還可以寫成
"\\192.168.0.2\d$\javatools\somefile.txt"
"\\workstation\javatools\somefile.txt"
""
這個(gè)函數(shù)除了能判斷文件是否存在外,還可以判斷本地或遠(yuǎn)程文件夾
是否存在,我覺得這要比用Dir這個(gè)VB自帶函數(shù)來判斷文件是否存在要好用多了,而且也不需要調(diào)用FileSystemObject組件來操作了。
serverstring = "Server=" 服務(wù)器IP ";DataBase=" 庫名 ";Userid=" 用戶名 ";Password=" 密碼
Try
Conn = New MySqlConnection(serverstring)
Conn.Open()
MsgBox("連接成功")
Conn.Dispose()
Conn.Close()
Catch ex As Exception
MsgBox("連接失敗!")
End Try
這是 mysql 的,自己改成 sql server 的就行了
Microsoft.VisualBasic.Devices.Network.IsAvailable As Boolean
生成實(shí)例后可以通過此屬性來獲取是否聯(lián)網(wǎng)的值,True代表已聯(lián)網(wǎng),F(xiàn)alse代表沒有聯(lián)網(wǎng)
Microsoft.VisualBasic.Devices.Network.NetworkAvailabilityChanged(ByVal Object, ByVal Microsoft.VisualBasic.Devices.NetworkAvailableEventArgs)
該事件是在電腦斷開/連上互聯(lián)網(wǎng)是引發(fā)的
其中:
e.IsNetworkAvailable
的功能同Microsoft.VisualBasic.Devices.Network.IsAvailable
實(shí)例:
Dim?netListener?As?New?Microsoft.VisualBasic.Devices.Network?'生成實(shí)例
If?netListener.IsAvailable?=?True?Then
MsgBox("已聯(lián)網(wǎng)")
Else
MsgBox("未聯(lián)網(wǎng)")
End?If
NetworkAvailabilityChanged實(shí)例:
WithEvents?netListener?As?New?Microsoft.VisualBasic.Devices.Network?'生成實(shí)例
Private?Sub?OnNetworkChanged(ByVal?Object,?ByVal?Microsoft.VisualBasic.Devices.NetworkAvailableEventArgs)Handles?netListener.NetworkAvailabilityChanged
If?e.IsNetworkAvailable?=?True?Then
MsgBox("已聯(lián)網(wǎng)")
Else
MsgBox("未聯(lián)網(wǎng)")
End?If
End?Sub
你這段代碼可以獲得該主機(jī)名下的所有ip,每個(gè)ip地址都是有類型簇的,可以區(qū)別本地地址和網(wǎng)絡(luò)地址、ip6地址。
你獲取索引為0的ip,不一定是正確的網(wǎng)絡(luò)地址,它有時(shí)順序在中間,在后面。
應(yīng)該獲取所有ip,再通過ip地址簇類型區(qū)分
判斷連接本身有一個(gè)函數(shù),不過有時(shí)沒聯(lián)網(wǎng)也是真。
可以用ping,ping百度、ping訪問速度快、不經(jīng)常維護(hù)斷線的網(wǎng)絡(luò)主機(jī)。