diff --git a/LibGUI/GSocket.cpp b/LibGUI/GSocket.cpp index 78343f2225..69662439a5 100644 --- a/LibGUI/GSocket.cpp +++ b/LibGUI/GSocket.cpp @@ -3,6 +3,7 @@ #include #include #include +#include GSocket::GSocket(Type type, GObject* parent) : GIODevice(parent) @@ -14,6 +15,19 @@ GSocket::~GSocket() { } +bool GSocket::connect(const String& hostname, int port) +{ + auto* hostent = gethostbyname(hostname.characters()); + if (!hostent) { + dbgprintf("GSocket::connect: Unable to resolve '%s'\n", hostname.characters()); + return false; + } + + IPv4Address host_address((const byte*)hostent->h_addr_list[0]); + dbgprintf("GSocket::connect: Resolved '%s' to %s\n", hostname.characters(), host_address.to_string().characters()); + return connect(host_address, port); +} + bool GSocket::connect(const GSocketAddress& address, int port) { ASSERT(!is_connected()); diff --git a/LibGUI/GSocket.h b/LibGUI/GSocket.h index 3c60864b6e..6b3c9eb5b1 100644 --- a/LibGUI/GSocket.h +++ b/LibGUI/GSocket.h @@ -37,6 +37,7 @@ public: enum class Type { Invalid, TCP, UDP }; virtual ~GSocket() override; + bool connect(const String& hostname, int port); bool connect(const GSocketAddress&, int port); ByteBuffer receive(int max_size);