FrigidDev
FrigidDev

Reputation: 222

Is there a portable way in standard C++ to retrieve hostname?

I'm working on a C++ program that needs to use the hostname of the computer it is running on. My current method of retrieving this is by mangling a C API like this:

char *host = new char[1024];
gethostname(host,1024);
auto hostname = std::string(host);
delete host;

Is there a portable modern C++ method for doing this, without including a large external library (e.g., boost)?

Upvotes: 3

Views: 3200

Answers (2)

mohtashami740
mohtashami740

Reputation: 384

#include <string>
//#include <winsock.h>      //Windows
//#include <unistd.h>       //Linux

std::string GetHostName(void)
{

    std::string res = "unknown";
    char tmp[0x100];
    if( gethostname(tmp, sizeof(tmp)) == 0 )
    {
        res = tmp;
    }
    return res;
}

Upvotes: 2

NathanOliver
NathanOliver

Reputation: 181027

No, there is no standard C++ support for this. You'll either have to make your own function, or get a library that has this functionality.

Upvotes: 4

Related Questions