Wrox Home  
Search P2P Archive for: Go

  Return to Index  

asp_web_howto thread: Machine name?


Message #1 by "GWEBU,SIPHIWE AS 9005425" <SIPHIWE@M...> on Fri, 19 Jan 2001 15:59 +0200
--- Received from ABSA1.ABAG260  (xxx) xxx xxxx       19-01-01 13.59



Hi.

Is there a way of obtaining the client's machine name using VB?Any

input will be appreciated.



Siphiwe Gwebu



---- 19-01-01 13.59 ---- Sent to       ---------------------------

  -> asp_web_howto@p...

Message #2 by "Toby Anscombe" <tanscombe@m...> on Fri, 19 Jan 2001 13:13:32 -0000
Private Declare Function GetComputerName Lib "kernel32" Alias

"GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long



Public Function ComputerName() As String

    Dim buffer As String * 512, length As Long

    length = Len(buffer)

    If GetComputerName(buffer, length) Then

        ' this API returns non-zero if successful,

        ' and modifies the length argument

        ComputerName = Left$(buffer, length)

    End If

End Function



Note - this will return the name of the machine the process is running on



Regards



T



-----Original Message-----

From: GWEBU,SIPHIWE AS 9005425 [mailto:SIPHIWE@M...]

Sent: 19 January 2001 13:59

To: ASP Web HowTo

Subject: [asp_web_howto] Machine name?





--- Received from ABSA1.ABAG260  (xxx) xxx xxxx       19-01-01 13.59



Hi.

Is there a way of obtaining the client's machine name using VB?Any

input will be appreciated.



Siphiwe Gwebu







Message #3 by "JstMeHr4u3" <jstmehr4u3@h...> on Fri, 19 Jan 2001 11:51:04 -0800
In asp you have to use the HTTP server vars. but here are two functions in

vb that will get IP address of local machine, and Machine name.



Option Explicit



     Const MAX_WSADescription = 256

     Const MAX_WSASYSStatus = 128

     Const ERROR_SUCCESS       As Long = 0

     Const WS_VERSION_REQD     As Long = &H101

     Const WS_VERSION_MAJOR    As Long = WS_VERSION_REQD \ &H100 And &HFF&

     Const WS_VERSION_MINOR    As Long = WS_VERSION_REQD And &HFF&

     Const MIN_SOCKETS_REQD    As Long = 1

     Const SOCKET_ERROR        As Long = -1



    Public Type HOSTENT

       hName      As Long

       hAliases   As Long

       hAddrType  As Integer

       hLen       As Integer

       hAddrList  As Long

    End Type



    Public Type WSADATA

       wVersion      As Integer

       wHighVersion  As Integer

       szDescription(0 To MAX_WSADescription)   As Byte

       szSystemStatus(0 To MAX_WSASYSStatus)    As Byte

       wMaxSockets   As Integer

       wMaxUDPDG     As Integer

       dwVendorInfo  As Long

    End Type



    Private Declare Function WSAGetLastError Lib "WSOCK32.DLL" () As Long



    Private Declare Function WSAStartup Lib "WSOCK32.DLL" _

       (ByVal wVersionRequired As Long, lpWSADATA As WSADATA) As Long



    Private Declare Function WSACleanup Lib "WSOCK32.DLL" () As Long



    Private Declare Function gethostname Lib "WSOCK32.DLL" _

       (ByVal szHost As String, ByVal dwHostLen As Long) As Long



    Private Declare Function gethostbyname Lib "WSOCK32.DLL" _

       (ByVal szHost As String) As Long



    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _

       (hpvDest As Any, ByVal hpvSource As Long, ByVal cbCopy As Long)





Public Function GetIPAddress() As String



   Dim sHostName    As String * 256

   Dim lpHost    As Long

   Dim HOST      As HOSTENT

   Dim dwIPAddr  As Long

   Dim tmpIPAddr() As Byte

   Dim i         As Integer

   Dim sIPAddr  As String



   If Not SocketsInitialize() Then

      GetIPAddress = ""

      Exit Function

   End If



  'gethostname returns the name of the local host into

  'the buffer specified by the name parameter. The host

  'name is returned as a null-terminated string. The

  'form of the host name is dependent on the Windows

  'Sockets provider - it can be a simple host name, or

  'it can be a fully qualified domain name. However, it

  'is guaranteed that the name returned will be successfully

  'parsed by gethostbyname and WSAAsyncGetHostByName.



  'In actual application, if no local host name has been

  'configured, gethostname must succeed and return a token

  'host name that gethostbyname or WSAAsyncGetHostByName

  'can resolve.

   If gethostname(sHostName, 256) = SOCKET_ERROR Then

      GetIPAddress = ""

      MsgBox "Windows Sockets error " & Str$(WSAGetLastError()) & _

              " has occurred. Unable to successfully get Host Name."

      SocketsCleanup

      Exit Function

   End If





  'gethostbyname returns a pointer to a HOSTENT structure

  '- a structure allocated by Windows Sockets. The HOSTENT

  'structure contains the results of a successful search

  'for the host specified in the name parameter.



  'The application must never attempt to modify this

  'structure or to free any of its components. Furthermore,

  'only one copy of this structure is allocated per thread,

  'so the application should copy any information it needs

  'before issuing any other Windows Sockets function calls.



  'gethostbyname function cannot resolve IP address strings

  'passed to it. Such a request is treated exactly as if an

  'unknown host name were passed. Use inet_addr to convert

  'an IP address string the string to an actual IP address,

  'then use another function, gethostbyaddr, to obtain the

  'contents of the HOSTENT structure.

   sHostName = Trim$(sHostName)

   lpHost = gethostbyname(sHostName)



   If lpHost = 0 Then

      GetIPAddress = ""

      MsgBox "Windows Sockets are not responding. " & _

              "Unable to successfully get Host Name."

      SocketsCleanup

      Exit Function

   End If



  'to extract the returned IP address, we have to copy

  'the HOST structure and its members

   CopyMemory HOST, lpHost, Len(HOST)

   CopyMemory dwIPAddr, HOST.hAddrList, 4



  'create an array to hold the result

   ReDim tmpIPAddr(1 To HOST.hLen)

   CopyMemory tmpIPAddr(1), dwIPAddr, HOST.hLen



  'and with the array, build the actual address,

  'appending a period between members

   For i = 1 To HOST.hLen

      sIPAddr = sIPAddr & tmpIPAddr(i) & "."

   Next



  'the routine adds a period to the end of the

  'string, so remove it here

   GetIPAddress = Mid$(sIPAddr, 1, Len(sIPAddr) - 1)



   SocketsCleanup



End Function



Public Function GetIPHostName() As String



    Dim sHostName As String * 256



    If Not SocketsInitialize() Then

        GetIPHostName = ""

        Exit Function

    End If



    If gethostname(sHostName, 256) = SOCKET_ERROR Then

        GetIPHostName = ""

        MsgBox "Windows Sockets error " & Str$(WSAGetLastError()) & _

                " has occurred.  Unable to successfully get Host Name."

        SocketsCleanup

        Exit Function

    End If



    GetIPHostName = Left$(sHostName, InStr(sHostName, Chr(0)) - 1)

    SocketsCleanup



End Function





Public Function HiByte(ByVal wParam As Integer) As Byte



  'note: VB4-32 users should declare this function As Integer

   HiByte = (wParam And &HFF00&) \ (&H100)



End Function





Public Function LoByte(ByVal wParam As Integer) As Byte



  'note: VB4-32 users should declare this function As Integer

   LoByte = wParam And &HFF&



End Function





Public Sub SocketsCleanup()



    If WSACleanup() <> ERROR_SUCCESS Then

        MsgBox "Socket error occurred in Cleanup."

    End If



End Sub



Public Function SocketsInitialize() As Boolean



   Dim WSAD As WSADATA

   Dim sLoByte As String

   Dim sHiByte As String



   If WSAStartup(WS_VERSION_REQD, WSAD) <> ERROR_SUCCESS Then

      MsgBox "The 32-bit Windows Socket is not responding."

      SocketsInitialize = False

      Exit Function

   End If



   If WSAD.wMaxSockets < MIN_SOCKETS_REQD Then

        MsgBox "This application requires a minimum of " & _

                CStr(MIN_SOCKETS_REQD) & " supported sockets."



        SocketsInitialize = False

        Exit Function

    End If



    If LoByte(WSAD.wVersion) < WS_VERSION_MAJOR Or _

        (LoByte(WSAD.wVersion) = WS_VERSION_MAJOR And _

         HiByte(WSAD.wVersion) < WS_VERSION_MINOR) Then



      sHiByte = CStr(HiByte(WSAD.wVersion))

      sLoByte = CStr(LoByte(WSAD.wVersion))



      MsgBox "Sockets version " & sLoByte & "." & sHiByte & _

             " is not supported by 32-bit Windows Sockets."



      SocketsInitialize = False

      Exit Function



   End If



  'must be OK, so lets do it

   SocketsInitialize = True



End Function









----- Original Message -----

From: "GWEBU,SIPHIWE AS 9005425" <SIPHIWE@M...>

To: "ASP Web HowTo" <asp_web_howto@p...>

Sent: Friday, January 19, 2001 5:59 AM

Subject: [asp_web_howto] Machine name?





--- Received from ABSA1.ABAG260  (xxx) xxx xxxx       19-01-01 13.59



Hi.

Is there a way of obtaining the client's machine name using VB?Any

input will be appreciated.



Siphiwe Gwebu



---- 19-01-01 13.59 ---- Sent to       ---------------------------

  -> asp_web_howto@p...


  Return to Index