diff options
Diffstat (limited to 'src/com/isode/stroke/network/HostAddress.java')
-rw-r--r-- | src/com/isode/stroke/network/HostAddress.java | 36 |
1 files changed, 32 insertions, 4 deletions
diff --git a/src/com/isode/stroke/network/HostAddress.java b/src/com/isode/stroke/network/HostAddress.java index c1b3600..a8eea1b 100644 --- a/src/com/isode/stroke/network/HostAddress.java +++ b/src/com/isode/stroke/network/HostAddress.java @@ -10,6 +10,7 @@ package com.isode.stroke.network; import java.net.InetAddress; +import java.net.UnknownHostException; public class HostAddress { @@ -17,12 +18,39 @@ public class HostAddress { address_ = null; } + public HostAddress(String address) { + try { + address_ = InetAddress.getByName(address); + } + catch (UnknownHostException e) { + address_ = null; + } + } + public HostAddress(InetAddress address) { address_ = address; } - /* public HostAddress(const String&); - public HostAddress(const unsigned char* address, int length); - public HostAddress(const boost::asio::ip::address& address);*/ + + public HostAddress(final char[] address, int length) { + try { + assert(length == 4 || length == 16); + byte[] data = new byte[length]; + if (length == 4) { + for (int i = 0; i < length; ++i) { + data[i] = (byte)address[i]; + } + } + else { + for (int i = 0; i < length; ++i) { + data[i] = (byte)address[i]; + } + } + address_ = InetAddress.getByAddress(data); + } catch (UnknownHostException e) { + address_ = null; + } + } + @Override public String toString() { @@ -57,5 +85,5 @@ public class HostAddress { return address_; } - private final InetAddress address_; + private InetAddress address_; } |