Network/TcpClient: Add Connect overload resolving hostname

Former-commit-id: 5c667a14c591e4e9cb898a8d4c83fedf161179fd
This commit is contained in:
Lynix
2015-11-10 14:45:59 +01:00
parent 3b9c736c16
commit a26c979d84
4 changed files with 33 additions and 2 deletions

View File

@@ -41,6 +41,34 @@ namespace Nz
return state;
}
SocketState TcpClient::Connect(const String& hostName, NetProtocol protocol, const String& service, ResolveError* error)
{
Disconnect();
UpdateState(SocketState_Resolving);
std::vector<HostnameInfo> results = IpAddress::ResolveHostname(protocol, hostName, service, error);
if (results.empty())
{
m_lastError = SocketError_ResolveError;
UpdateState(SocketState_NotConnected);
return m_state;
}
IpAddress hostnameAddress;
for (const HostnameInfo& result : results)
{
//TODO: Check PF_ type (TCP)
if (!result.address)
continue;
hostnameAddress = result.address;
break; //< Take first valid address
}
return Connect(hostnameAddress);
}
void TcpClient::EnableLowDelay(bool lowDelay)
{
NazaraAssert(m_handle != SocketImpl::InvalidHandle, "Invalid handle");