显示主机名和IP地址

时间:2013-01-22 18:50:16

标签: vb.net hostname

我正在尝试为我们网络上的用户创建一个工具,向IT部门报告他们的PC主机名和IP地址。为了获得帮助,我们有一个仓库部门,喜欢在个人电脑和用户身边随意播放,所以我无法可靠地分辨出谁在PC上。这是一个快速的方法来阻止他们说“吉姆的PC”并让他们给我有用的信息,如“WAREHOUSE_WINXP_4”。

我已经创建了我认为应该是一个工作程序,虽然它编译并执行没有错误,但我似乎无法正确设置文本框内容。该程序非常简单 - 只是一个带有2个文本框的表单。

(注意:我更多的是一个系统管理员/ netadmin / infosec专家,所以我可能在这里犯了一些id10t错误,但我自己也有点想法。)

Public Class Form1
    Dim strHostname As String
    Dim strIPAddress As String

    Public Sub getHostname()
        strHostname = System.Net.Dns.GetHostName()
        'txtHostname.Text = strHostname  Apparently putting it here won't work.  In Load() maybe?
    End Sub

    Public Sub getIPAddress()
        strIPAddress = System.Net.Dns.GetHostEntry(strHostname).AddressList(0).ToString()
        'txtIPAddress.Text = strIPAddress Apparently putting it here won't work.  In Load() maybe?
    End Sub

    Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        getIPAddress()
        getHostname()
        txtHostname.Text = strHostname
        txtIPAddress.Text = strIPAddress
    End Sub
End Class

3 个答案:

答案 0 :(得分:2)

正如其他人所提到的,您正在以错误的顺序调用方法。您的getIPAddress方法使用strHostname变量。 strHostname变量由getHostname方法设置。因此,您需要先致电getHostname,然后才能拨打getIPAddress

但是,真正的问题是您已经以可能的方式设计代码以错误的顺序调用方法。最好不要有那些容易导致错误的隐藏规则。例如,如果您编写了这样的代码,那么调用方法的顺序就不再重要了:

Imports System.Net

Public Class Form1
    Public Function GetHostName() As String
        Return Dns.GetHostName()
    End Sub

    Public Function GetIpAddress() As String
        Return Dns.GetHostEntry(GetHostname()).AddressList(0).ToString()
    End Sub

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
        txtHostname.Text = GetHostName()
        txtIPAddress.Text = GetIpAddress()
    End Sub
End Class

答案 1 :(得分:0)

您正在调用strHostname的调用中设置全局变量getHostname的值,但您在getIPAddress的调用中使用了该变量。但是,您在致电getIPAddress 之前致电getHostName 。颠倒调用的顺序,它应该有效。

更好的是,您可能会重新考虑使用全局变量来防止这样的依赖。函数参数将以更容易调试的方式工作。您可以使用System.Net.Dns.GetHostEntry(strHostname).AddressList(0).ToString()作为getIPAddress的参数。

答案 2 :(得分:0)

更改getIPAddressgetHostname方法调用的顺序。您在strHostname方法中使用getIPAddress值,但尚未为其分配值。