## jcifs.netbios
Class NbtAddress

    java.lang.Object
      jcifs.netbios.NbtAddress

    public final class NbtAddress

extends java.lang.Object

This class represents a NetBIOS over TCP/IP address. Under normal conditions, users of jCIFS need not be concerned with this class as name resolution and session services are handled internally by the smb package.

Applications can use the methods `getLocalHost`, `getByName`, and `getAllByAddress` to create a new NbtAddress instance. This class is symmetric with `InetAddress`.

About NetBIOS: The NetBIOS name service is a dynamic distributed service that allows hosts to resolve names by broadcasting a query, directing queries to a server such as Samba or WINS. NetBIOS is currently the primary networking layer for providing name service, datagram service, and session service to the Microsoft Windows platform. A NetBIOS name can be 15 characters long and hosts usually registers several names on the network. From a Windows command prompt you can see what names a host registers with the nbtstat command.

>      C:\>nbtstat -a 192.168.1.15

>             NetBIOS Remote Machine Name Table

>         Name               Type         Status
>      ---------------------------------------------
>      JMORRIS2        <00>  UNIQUE      Registered
>      BILLING-NY      <00>  GROUP       Registered
>      JMORRIS2        <03>  UNIQUE      Registered
>      JMORRIS2        <20>  UNIQUE      Registered
>      BILLING-NY      <1E>  GROUP       Registered
>      JMORRIS         <03>  UNIQUE      Registered

>      MAC Address = 00-B0-34-21-FA-3B

The hostname of this machine is `JMORRIS2`. It is a member of the group(a.k.a workgroup and domain) `BILLING-NY`. To obtain an `InetAddress` for a host one might do:

       InetAddress addr = NbtAddress.getByName( "jmorris2" ).getInetAddress();

From a UNIX platform with Samba installed you can perform similar diagnostics using the `nmblookup` utility.

Since:
  jcifs-0.1
Author:
  Michael B. Allen
See Also:
  `InetAddress`

Field Summary
`static int` `B_NODE` A B node only broadcasts name queries.
`static int` `H_NODE` A Hybrid node tries to resolve a name using the nameserver first.
`static int` `M_NODE` Try Broadcast queries first, then try to resolve the name using the nameserver.
`static java.lang.String` `MASTER_BROWSER_NAME` This is a special name for querying the master browser that serves the list of hosts found in "Network Neighborhood".
`static int` `P_NODE` A Point-to-Point node, or P node, unicasts queries to a nameserver only.
`static java.lang.String` `SMBSERVER_NAME` A special generic name specified when connecting to a host for which a name is not known.

Method Summary
`boolean` `equals(java.lang.Object obj)` Determines if this address is equal two another.
`java.lang.String` `firstCalledName()`
`byte[]` `getAddress()` Returns the raw IP address of this NbtAddress.
`static NbtAddress[]` `getAllByAddress(NbtAddress addr)` Retrieve all addresses of a host by it's address.
`static NbtAddress[]` `getAllByAddress(java.lang.String host)` Retrieve all addresses of a host by it's address.
`static NbtAddress[]` `getAllByAddress(java.lang.String host, int type, java.lang.String scope)` Retrieve all addresses of a host by it's address.
`static NbtAddress[]` `getAllByName(java.lang.String host, int type, java.lang.String scope, java.net.InetAddress svr)`
`static NbtAddress` `getByName(java.lang.String host)` Determines the address of a host given it's host name.
`static NbtAddress` `getByName(java.lang.String host, int type, java.lang.String scope)` Determines the address of a host given it's host name.
`static NbtAddress` `getByName(java.lang.String host, int type, java.lang.String scope, java.net.InetAddress svr)`
`java.lang.String` `getHostAddress()` Returns this IP adress as a `String` in the form "%d.%d.%d.%d".
`java.lang.String` `getHostName()` The hostname of this address.
`java.net.InetAddress` `getInetAddress()` To convert this address to an `InetAddress`.
`static NbtAddress` `getLocalHost()` Retrieves the local host address.
`static jcifs.netbios.Name` `getLocalName()`
`byte[]` `getMacAddress()` Retrieves the MAC address of the remote network interface.
`int` `getNameType()` Returned the hex code associated with this name(e.g.
`int` `getNodeType()` Checks the node type of this address.
`static java.net.InetAddress` `getWINSAddress()`
`int` `hashCode()` Returns a hashcode for this IP address.
`boolean` `isActive()` Determines if this address is active.
`boolean` `isBeingDeleted()` Determines if this address in the process of being deleted.
`boolean` `isGroupAddress()` Determines if the address is a group address.
`boolean` `isInConflict()` Determines if this address in conflict with another address.
`boolean` `isPermanent()` Determines if this address is set to be permanent.
`static boolean` `isWINS(java.net.InetAddress svr)`
`java.lang.String` `nextCalledName()`
`java.lang.String` `toString()` Returns the `String` representaion of this address.

Methods inherited from class java.lang.Object
`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

Field Detail

### MASTER_BROWSER_NAME

    public static final java.lang.String MASTER_BROWSER_NAME

  This is a special name for querying the master browser that serves the list of hosts found in "Network Neighborhood".

  See Also:
    Constant Field Values

### SMBSERVER_NAME

    public static final java.lang.String SMBSERVER_NAME

  A special generic name specified when connecting to a host for which a name is not known. Not all servers respond to this name.

  See Also:
    Constant Field Values

### B_NODE

    public static final int B_NODE

  A B node only broadcasts name queries. This is the default if a nameserver such as WINS or Samba is not specified.

  See Also:
    Constant Field Values

### P_NODE

    public static final int P_NODE

  A Point-to-Point node, or P node, unicasts queries to a nameserver only. Natrually the `jcifs.netbios.nameserver` property must be set.

  See Also:
    Constant Field Values

### M_NODE

    public static final int M_NODE

  Try Broadcast queries first, then try to resolve the name using the nameserver.

  See Also:
    Constant Field Values

### H_NODE

    public static final int H_NODE

  A Hybrid node tries to resolve a name using the nameserver first. If that fails use the broadcast address. This is the default if a nameserver is provided. This is the behavior of Microsoft Windows machines.

  See Also:
    Constant Field Values

Method Detail

### getLocalHost

    public static NbtAddress getLocalHost()
                                   throws java.net.UnknownHostException

  Retrieves the local host address.

  Throws:
    `java.net.UnknownHostException` - This is not likely as the IP returned by `InetAddress` should be available

### getLocalName

    public static jcifs.netbios.Name getLocalName()

### getByName

    public static NbtAddress getByName(java.lang.String host)
                                throws java.net.UnknownHostException

  Determines the address of a host given it's host name. The name can be a NetBIOS name like "freto" or an IP address like "192.168.1.15". It cannot be a DNS name; the analygous `UniAddress` or `InetAddress` `getByName` methods can be used for that.

  Parameters:
    `host` - hostname to resolve
  Throws:
    `java.net.UnknownHostException` - if there is an error resolving the name

### getByName

    public static NbtAddress getByName(java.lang.String host,
                                       int type,
                                       java.lang.String scope)
                                throws java.net.UnknownHostException

  Determines the address of a host given it's host name. NetBIOS names also have a `type`. Types(aka Hex Codes) are used to distiquish the various services on a host. Here is a fairly complete list of NetBIOS hex codes. Scope is not used but is still functional in other NetBIOS products and so for completeness it has been implemented. A `scope` of `null` or `""` signifies no scope.

  Parameters:
    `host` - the name to resolve
    `type` - the hex code of the name
    `scope` - the scope of the name
  Throws:
    `java.net.UnknownHostException` - if there is an error resolving the name

### getByName

    public static NbtAddress getByName(java.lang.String host,
                                       int type,
                                       java.lang.String scope,
                                       java.net.InetAddress svr)
                                throws java.net.UnknownHostException

  Throws:
    `java.net.UnknownHostException`

### getAllByName

    public static NbtAddress[] getAllByName(java.lang.String host,
                                            int type,
                                            java.lang.String scope,
                                            java.net.InetAddress svr)
                                     throws java.net.UnknownHostException

  Throws:
    `java.net.UnknownHostException`

### getAllByAddress

    public static NbtAddress[] getAllByAddress(java.lang.String host)
                                        throws java.net.UnknownHostException

  Retrieve all addresses of a host by it's address. NetBIOS hosts can have many names for a given IP address. The name and IP address make the NetBIOS address. This provides a way to retrieve the other names for a host with the same IP address.

  Parameters:
    `host` - hostname to lookup all addresses for
  Throws:
    `java.net.UnknownHostException` - if there is an error resolving the name

### getAllByAddress

    public static NbtAddress[] getAllByAddress(java.lang.String host,
                                               int type,
                                               java.lang.String scope)
                                        throws java.net.UnknownHostException

  Retrieve all addresses of a host by it's address. NetBIOS hosts can have many names for a given IP address. The name and IP address make the NetBIOS address. This provides a way to retrieve the other names for a host with the same IP address. See `getByName(java.lang.String)` for a description of `type` and `scope`.

  Parameters:
    `host` - hostname to lookup all addresses for
    `type` - the hexcode of the name
    `scope` - the scope of the name
  Throws:
    `java.net.UnknownHostException` - if there is an error resolving the name

### getAllByAddress

    public static NbtAddress[] getAllByAddress(NbtAddress addr)
                                        throws java.net.UnknownHostException

  Retrieve all addresses of a host by it's address. NetBIOS hosts can have many names for a given IP address. The name and IP address make the NetBIOS address. This provides a way to retrieve the other names for a host with the same IP address.

  Parameters:
    `addr` - the address to query
  Throws:
    `java.net.UnknownHostException` - if address cannot be resolved

### getWINSAddress

    public static java.net.InetAddress getWINSAddress()

### isWINS

    public static boolean isWINS(java.net.InetAddress svr)

### firstCalledName

    public java.lang.String firstCalledName()

### nextCalledName

    public java.lang.String nextCalledName()

### isGroupAddress

    public boolean isGroupAddress()
                           throws java.net.UnknownHostException

  Determines if the address is a group address. This is also known as a workgroup name or group name.

  Throws:
    `java.net.UnknownHostException` - if the host cannot be resolved to find out.

### getNodeType

    public int getNodeType()
                    throws java.net.UnknownHostException

  Checks the node type of this address.

  Returns:
    `B_NODE`, `P_NODE`, `M_NODE`, `H_NODE`
  Throws:
    `java.net.UnknownHostException` - if the host cannot be resolved to find out.

### isBeingDeleted

    public boolean isBeingDeleted()
                           throws java.net.UnknownHostException

  Determines if this address in the process of being deleted.

  Throws:
    `java.net.UnknownHostException` - if the host cannot be resolved to find out.

### isInConflict

    public boolean isInConflict()
                         throws java.net.UnknownHostException

  Determines if this address in conflict with another address.

  Throws:
    `java.net.UnknownHostException` - if the host cannot be resolved to find out.

### isActive

    public boolean isActive()
                     throws java.net.UnknownHostException

  Determines if this address is active.

  Throws:
    `java.net.UnknownHostException` - if the host cannot be resolved to find out.

### isPermanent

    public boolean isPermanent()
                        throws java.net.UnknownHostException

  Determines if this address is set to be permanent.

  Throws:
    `java.net.UnknownHostException` - if the host cannot be resolved to find out.

### getMacAddress

    public byte[] getMacAddress()
                         throws java.net.UnknownHostException

  Retrieves the MAC address of the remote network interface. Samba returns all zeros.

  Returns:
    the MAC address as an array of six bytes
  Throws:
    `java.net.UnknownHostException` - if the host cannot be resolved to determine the MAC address.

### getHostName

    public java.lang.String getHostName()

  The hostname of this address. If the hostname is null the local machines IP address is returned.

  Returns:
    the text representation of the hostname associated with this address

### getAddress

    public byte[] getAddress()

  Returns the raw IP address of this NbtAddress. The result is in network byte order: the highest order byte of the address is in getAddress()[0].

  Returns:
    a four byte array

### getInetAddress

    public java.net.InetAddress getInetAddress()
                                        throws java.net.UnknownHostException

  To convert this address to an `InetAddress`.

  Returns:
    the `InetAddress` representation of this address.
  Throws:
    `java.net.UnknownHostException`

### getHostAddress

    public java.lang.String getHostAddress()

  Returns this IP adress as a `String` in the form "%d.%d.%d.%d".

### getNameType

    public int getNameType()

  Returned the hex code associated with this name(e.g. 0x20 is for the file service)

### hashCode

    public int hashCode()

  Returns a hashcode for this IP address. The hashcode comes from the IP address and is not generated from the string representation. So because NetBIOS nodes can have many names, all names associated with an IP will have the same hashcode.

  Overrides:
    `hashCode` in class `java.lang.Object`

### equals

    public boolean equals(java.lang.Object obj)

  Determines if this address is equal two another. Only the IP Addresses are compared. Similar to the `hashCode()` method, the comparison is based on the integer IP address and not the string representation.

  Overrides:
    `equals` in class `java.lang.Object`

### toString

    public java.lang.String toString()

  Returns the `String` representaion of this address.

  Overrides:
    `toString` in class `java.lang.Object`