如何通过代码判断本机是否上网?
请问如何通过代码判断本机是否上网? --------------------编程问答--------------------
[System.Runtime.InteropServices.DllImport("winInet.dll")] ‘调用Win32 API函数
然后判断InternetGetConnectedState 的值 --------------------编程问答-------------------- 简单的就运行下ping
看看能不能ping通不就ok了?
怎么用ping不用教了吧?不会的百度下 --------------------编程问答--------------------
百度。。。C#实现ping
参考
--------------------编程问答-------------------- .NET已经有封装的,
Computer.Network.Ping("IP地址")就可以了
还有一个可以判断是否连接的函数,具体的忘记了,搜一下吧 --------------------编程问答--------------------
Private Sub FrmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load--------------------编程问答-------------------- 其实还是用ping更可靠一些,如果判断是否连通互联网就ping微软或某知名网站的域名,内网就ping已知服务器地址即可 --------------------编程问答-------------------- Public Declare Auto Function RasGetEntryDialParams Lib "rasapi32.dll" (ByVal PhoneBook As String, ByRef DialParams As RASDIALPARAMS, ByRef Password As Int32) As Int32
If My.Computer.Network.IsAvailable = True Then
MsgBox("電腦網絡已經連接.")
Else
MsgBox("電腦網絡未連接.")
End If
End Sub
Public Declare Unicode Function RasDial Lib "rasapi32.dll" Alias "RasDialW" (ByVal RasDialExtensions As Int32, ByVal PhoneBook As String, ByRef DialParams As RASDIALPARAMS, ByVal NotifierType As Int32, ByVal Notifier As Int32, ByRef hRasConnection As Int32) As Int32
Public Declare Auto Function RasEnumConnections Lib "rasapi32.dll" (ByRef lprasconn As RASCONN, ByRef lpcb As Integer, ByRef lpcConnections As Integer) As Integer
Public Declare Auto Function RasHangUp Lib "rasapi32.dll" (ByVal hrasconn As IntPtr) As Integer
Private Declare Function InternetGetConnectedState Lib "wininet.dll" (ByRef lpdwFlags As Long, ByVal dwReserved As Long) As Long
断网:
Private Function Disconnect() As Integer
Dim RasCon As New RASCONN
Dim lbcp As Integer
Dim lpconnection As Integer
RasCon.dwSize = Marshal.SizeOf(GetType(RASCONN))
lbcp = RasCon.dwSize
RasEnumConnections(RasCon, lbcp, lpconnection)
RasHangUp(RasCon.hrasconn)
End Function
联网:
Private Function GetRasDialParams(ByVal EntryName As String) As Integer
Dim hRASHandle As IntPtr
Dim params As New RASDIALPARAMS
Dim rtn As Int32,
bResult As Boolean = False
params.Size = Marshal.SizeOf(params)
params.EntryName = EntryName
params.UserName = "111111"
params.Password = "123456"
Dim bFlag As Int32 = 0 'rtn = RasGetEntryDialParams(vbNullString, params, bFlag) 'Me.Text = params.Password
' MsgBox(RasGetEntryDialParams(vbNullString, params, bFlag))
If rtn = 0 Then
Return RasDial(Nothing, vbNullString, params, 0, Nothing, hRASHandle) ' returns 632 for some reason...
' MsgBox("JK")
End If
End Function --------------------编程问答-------------------- 一般情况下5楼的方法就行了吧如果机器还连接了局域网,那就再用4楼的方法ping个DNS服务器看看结果
补充:.NET技术 , VB.NET