1.獲取當(dāng)前電腦名:System.Net.Dns.GetHostName()
創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的新都網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
2.根據(jù)電腦名取出全部IP地址:System.Net.Dns.Resolve(電腦名).AddressList
或者 System.Net.Dns.GetHostByName(電腦名).AddressList
3.根據(jù)IP地址取出電腦名:System.Net.Dns.Resolve(IP地址).HostName
你這段代碼可以獲得該主機名下的所有ip,每個ip地址都是有類型簇的,可以區(qū)別本地地址和網(wǎng)絡(luò)地址、ip6地址。
你獲取索引為0的ip,不一定是正確的網(wǎng)絡(luò)地址,它有時順序在中間,在后面。
應(yīng)該獲取所有ip,再通過ip地址簇類型區(qū)分
判斷連接本身有一個函數(shù),不過有時沒聯(lián)網(wǎng)也是真。
可以用ping,ping百度、ping訪問速度快、不經(jīng)常維護(hù)斷線的網(wǎng)絡(luò)主機。
你最好可以換臺電腦訪問網(wǎng)址看獲取IP地址狀況。
如果你測試訪問的時候,使用的是 localhost 進(jìn)行訪問的,那么服務(wù)器端獲得的也就是127.0.0.1,因為localhost是一個環(huán)路地址,特殊的.如果你是通過你的ip地址進(jìn)行訪問的,那么獲得的IP地址就會是正確的了. 要通過自己本地的IP進(jìn)行訪問,在控制面板的網(wǎng)絡(luò)連接里找到本地連接,查看它的屬性,并找到"詳細(xì)信息"按鈕,點擊后彈出的對話框中IPV4地址就是本地地址.或打開命令行,輸入 ipconfig /all 即可找到本地地址.在瀏覽器中通過這個IP地址訪問,就不會是127.0.0.1了.
這兒有一個C#的參考
我給改寫成了VB.net?看看你能用上不?
Imports System.Diagnostics
Imports System.Text.RegularExpressions
Module mdlIpDns
Public Function RunCMD(ByVal FileName As String, ByVal Arguments As String, ByVal RecordLog As Boolean) As String
REM 運行一個控制臺程序并返回其輸出參數(shù)
Try
If RecordLog = True Then Trace.WriteLine(FileName + " " + Arguments)
Dim myProc As Process = New Process
myProc.StartInfo.FileName = FileName
myProc.StartInfo.CreateNoWindow = True
myProc.StartInfo.Arguments = Arguments
myProc.StartInfo.RedirectStandardOutput = True
myProc.StartInfo.UseShellExecute = False
myProc.Start()
Dim myStreamReader As System.IO.StreamReader = New System.IO.StreamReader(myProc.StandardOutput.BaseStream, System.Text.Encoding.Default)
Dim myText As String = myStreamReader.ReadToEnd
myStreamReader.Close()
If RecordLog = True Then Trace.WriteLine(myText)
If Not myProc.HasExited Then myProc.Kill()
Return myText
Catch ex As Exception
Trace.WriteLine(ex.ToString)
Return vbNull
End Try
End Function
Public Function GetAllIp() As String
REM 獲取本機全部網(wǎng)卡的IP地址
GetAllIp = ""
Dim Address() As System.Net.IPAddress
Dim i As Integer
Address = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()).AddressList
For i = 0 To UBound(Address)
GetAllIp = GetAllIp (Chr(13) Address(i).ToString())
Next
End Function
Public Function GetPrimaryDNS() As String
REM 獲取本機主DNS
GetPrimaryDNS = ""
Dim m As System.Text.RegularExpressions.Match
Dim myResult As String = RunCMD("nslookup", "", True) '需要RunCMD.mdl
m = Regex.Match(myResult, "\d+\.\d+\.\d+\.\d+")
If m.Success Then
Return m.Value
Else
Return vbNull
End If
End Function
Public Function GetLocalIP() As String
REM 獲取本機正在使用的IPv4地址
REM 1.一個電腦有多個網(wǎng)卡,有線的、無線的、還有VMare虛擬的兩個網(wǎng)卡。
REM 2.就算只有一個網(wǎng)卡,但是該網(wǎng)卡配置了N個IP地址.其中還包括IPv6地址。
REM 3.下面通過查詢本機路由表,獲取訪問默認(rèn)網(wǎng)關(guān)時使用的網(wǎng)卡IP。
Dim m As System.Text.RegularExpressions.Match
Dim myResult As String = RunCMD("route", "print", True) '需要RunCMD.mdl
m = Regex.Match(myResult, "0.0.0.0\s+0.0.0.0\s+(\d+.\d+.\d+.\d+)\s+(\d+.\d+.\d+.\d+)")
If m.Success Then
Return m.Groups(2).Value
Else
Try
Dim myTcpClient As System.Net.Sockets.TcpClient = New System.Net.Sockets.TcpClient
myTcpClient.Connect("", 80) '連接百度判斷IP
Dim myIpPoint As System.Net.IPEndPoint = myTcpClient.Client.LocalEndPoint
Dim myIp As String = myIpPoint.Address.ToString
myTcpClient.Close()
Return myIp
Catch ex As Exception
Return vbNull
End Try
End If
End Function
End Module
MsgBox(System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName).AddressList(0).ToString)這是vb2008里面的格式,這是顯示自己的IP,不知你是想要獲取哪些IP 呢
至少需要
Imports?System
Imports?System.Net
Imports?System.Net.Sockets
Imports?System.Threading
Imports?System.Text
還要了解異步與委托
簡單點的話
sub?tcplisten()?'監(jiān)聽過程
Const?LPort?As?Integer?=?6850?'本地監(jiān)聽端口
Dim?IPadd?As?IPAddress?=?Dns.GetHostEntry(Dns.GetHostName()).AddressList(1)?’本地IP
'addresslist里面包括IPV6和IPV4
Dim?IPEP?As?New?IPEndPoint(IPadd,?LPort)?'結(jié)點
TCPL?=?New?TcpListener(IPEP)?’建立監(jiān)聽實例
TCPL.Start()?'開始監(jiān)聽
If?TCPL.Pending?=?True?Then?'如果有連接接入
Dim?TCPLX?As?New?Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp)?'建立一個新的SOCKET
TCPLX=TCPL.Accept()?’將第一個接入掛起的連接傳給新建SOCKET,因為監(jiān)聽的SOCKET還要繼續(xù)監(jiān)聽
dim?Ripep?as??new?ipendpoint=TCPLX.RemoteEndPoint?'此時獲得遠(yuǎn)程的ip與端口號
listbox.add(ripep.ip)
dim?buff?as?byte()
buff=TCPLX.Receive()?'listenacceptrecieve這時候可以接受數(shù)據(jù)了
dim?s?as?string=Encoding.Default.GetString(buff)?'轉(zhuǎn)換成文本
msg?"s"
TCPLX.send(buff)?'這個是發(fā)送
end?if
End?Sub
長時間沒寫,可能有點小錯誤,你自己調(diào)試調(diào)試,大概步驟就是listenacceptrecieve,最好看看msdn,那個學(xué)起來才系統(tǒng)