static IPHostEntry GetHostByAddressFromString (string address, bool parse)
{
// Undocumented MS behavior: when called with IF_ANY,
// this should return the local host
if (address.Equals ("0.0.0.0")) {
address = "127.0.0.1";
parse = false;
}
// Must check the IP format, might send an exception if invalid string.
if (parse)
IPAddress.Parse (address);
string h_name;
string[] h_aliases, h_addrlist;
#if TARGET_JVM
h_name = null;
h_aliases = null;
h_addrlist = null;
try {
java.net.InetAddress[] iaArr =
java.net.InetAddress.getAllByName(address);
if (iaArr != null && iaArr.Length > 0)
h_name = iaArr[0].getHostName();
if (iaArr != null && iaArr.Length > 0)
{
h_addrlist = new String[iaArr.Length];
for (int i = 0; i < h_addrlist.Length; i++)
h_addrlist[i] = iaArr[i].getHostAddress();
}
} catch (java.net.UnknownHostException jUHE) {
throw new SocketException((int)SocketError.HostNotFound, jUHE.Message);
}
#else
bool ret = GetHostByAddr_internal(address, out h_name, out h_aliases, out h_addrlist);
if (!ret)
throw new SocketException(11001);
#endif
return (hostent_to_IPHostEntry (h_name, h_aliases, h_addrlist));
}