Module jcifs

Class NbtAddress

java.lang.Object
org.codelibs.jcifs.smb.netbios.NbtAddress
All Implemented Interfaces:
Address, NetbiosAddress

public final class NbtAddress extends Object implements NetbiosAddress
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:
org.codelibs.jcifs.smb-0.1
Author:
Michael B. Allen
See Also:
  • Field Details

    • ANY_HOSTS_NAME

      public static final String ANY_HOSTS_NAME
      This is a special name that means all hosts. If you wish to find all hosts on a network querying a workgroup group name is the preferred method.
      See Also:
    • MASTER_BROWSER_NAME

      public static final 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:
    • SMBSERVER_NAME

      public static final 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:
    • 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:
    • P_NODE

      public static final int P_NODE
      A Point-to-Point node, or P node, unicasts queries to a nameserver only. Natrually the org.codelibs.jcifs.smb.netbios.nameserver property must be set.
      See Also:
    • M_NODE

      public static final int M_NODE
      Try Broadcast queries first, then try to resolve the name using the nameserver.
      See Also:
    • 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:
    • UNKNOWN_MAC_ADDRESS

      public static final byte[] UNKNOWN_MAC_ADDRESS
      Unknown MAC Address
  • Method Details

    • unwrap

      public <T extends Address> T unwrap(Class<T> type)
      Unwrap the address to a specific type
      Specified by:
      unwrap in interface Address
      Type Parameters:
      T - the type to unwrap to
      Parameters:
      type - the target type to unwrap to
      Returns:
      instance for type, null if the type cannot be unwrapped
      See Also:
    • firstCalledName

      public String firstCalledName()
      Guess next called name to try for session establishment. These methods are used by the smb package.
      Specified by:
      firstCalledName in interface Address
      Returns:
      guessed name
    • nextCalledName

      public String nextCalledName(CIFSContext tc)
      Description copied from interface: Address
      Guess next called name to try for session establishment. These methods are used by the smb package.
      Specified by:
      nextCalledName in interface Address
      Parameters:
      tc - context to use
      Returns:
      net name to try
    • isGroupAddress

      public boolean isGroupAddress(CIFSContext tc) throws UnknownHostException
      Description copied from interface: NetbiosAddress
      Determines if the address is a group address. This is also known as a workgroup name or group name.
      Specified by:
      isGroupAddress in interface NetbiosAddress
      Parameters:
      tc - context to use
      Returns:
      whether the given address is a group address
      Throws:
      UnknownHostException - if the host cannot be resolved to find out.
    • getNodeType

      public int getNodeType(CIFSContext tc) throws UnknownHostException
      Description copied from interface: NetbiosAddress
      Checks the node type of this address.
      Specified by:
      getNodeType in interface NetbiosAddress
      Parameters:
      tc - context to use
      Returns:
      B_NODE, P_NODE, M_NODE, H_NODE
      Throws:
      UnknownHostException - if the host cannot be resolved to find out.
    • isBeingDeleted

      public boolean isBeingDeleted(CIFSContext tc) throws UnknownHostException
      Description copied from interface: NetbiosAddress
      Determines if this address in the process of being deleted.
      Specified by:
      isBeingDeleted in interface NetbiosAddress
      Parameters:
      tc - context to use
      Returns:
      whether this address is in the process of being deleted
      Throws:
      UnknownHostException - if the host cannot be resolved to find out.
    • isInConflict

      public boolean isInConflict(CIFSContext tc) throws UnknownHostException
      Description copied from interface: NetbiosAddress
      Determines if this address in conflict with another address.
      Specified by:
      isInConflict in interface NetbiosAddress
      Parameters:
      tc - context to use
      Returns:
      whether this address is in conflict with another address
      Throws:
      UnknownHostException - if the host cannot be resolved to find out.
    • isActive

      public boolean isActive(CIFSContext tc) throws UnknownHostException
      Description copied from interface: NetbiosAddress
      Determines if this address is active.
      Specified by:
      isActive in interface NetbiosAddress
      Parameters:
      tc - context to use
      Returns:
      whether this address is active
      Throws:
      UnknownHostException - if the host cannot be resolved to find out.
    • isPermanent

      public boolean isPermanent(CIFSContext tc) throws UnknownHostException
      Description copied from interface: NetbiosAddress
      Determines if this address is set to be permanent.
      Specified by:
      isPermanent in interface NetbiosAddress
      Parameters:
      tc - context to use
      Returns:
      whether this address is permanent
      Throws:
      UnknownHostException - if the host cannot be resolved to find out.
    • getMacAddress

      public byte[] getMacAddress(CIFSContext tc) throws UnknownHostException
      Description copied from interface: NetbiosAddress
      Retrieves the MAC address of the remote network interface. Samba returns all zeros.
      Specified by:
      getMacAddress in interface NetbiosAddress
      Parameters:
      tc - context to use
      Returns:
      the MAC address as an array of six bytes
      Throws:
      UnknownHostException - if the host cannot be resolved to determine the MAC address.
    • getHostName

      public String getHostName()
      The hostname of this address. If the hostname is null the local machines IP address is returned.
      Specified by:
      getHostName in interface Address
      Returns:
      the text representation of the hostname associated with this address
    • getName

      public NetbiosName getName()
      Description copied from interface: NetbiosAddress
      Gets the NetBIOS name associated with this address.
      Specified by:
      getName in interface NetbiosAddress
      Returns:
      the name for 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 InetAddress getInetAddress() throws UnknownHostException
      To convert this address to an InetAddress.
      Returns:
      the InetAddress representation of this address.
      Throws:
      UnknownHostException - if the address cannot be resolved
    • toInetAddress

      public InetAddress toInetAddress() throws UnknownHostException
      Description copied from interface: Address
      Converts this address to an InetAddress.
      Specified by:
      toInetAddress in interface Address
      Returns:
      this address as an InetAddress
      Throws:
      UnknownHostException - if the host cannot be resolved
    • getHostAddress

      public String getHostAddress()
      Returns this IP adress as a String in the form "%d.%d.%d.%d".
      Specified by:
      getHostAddress in interface Address
      Returns:
      string representation of the IP address
    • getNameType

      public int getNameType()
      Description copied from interface: NetbiosAddress
      Returned the hex code associated with this name(e.g. 0x20 is for the file service)
      Specified by:
      getNameType in interface NetbiosAddress
      Returns:
      the name type
    • 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 Object
    • equals

      public boolean equals(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 Object
    • toString

      public String toString()
      Returns the String representaion of this address.
      Overrides:
      toString in class Object