From a76d96f7161b856113b15b256cd0faac15eaa648 Mon Sep 17 00:00:00 2001 From: Tim Felgentreff <timfelgentreff@gmail.com> Date: Mon, 21 Dec 2020 20:40:08 +0100 Subject: [PATCH] add a function to get the local hostname --- src/include/net_lowlevel.h | 2 ++ src/network/net_lowlevel.cpp | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/include/net_lowlevel.h b/src/include/net_lowlevel.h index 9c1a9b377..6d543b409 100644 --- a/src/include/net_lowlevel.h +++ b/src/include/net_lowlevel.h @@ -114,6 +114,8 @@ extern void NetExit(); extern unsigned long NetResolveHost(const std::string &host); /// Get local IPs extern int NetSocketAddr(unsigned long *ips, int maxAddr); +/// Get local hostname +extern std::string NetGetHostname(); /// Open a UDP Socket port. (param in network format) extern Socket NetOpenUDP(unsigned long ip, int port); diff --git a/src/network/net_lowlevel.cpp b/src/network/net_lowlevel.cpp index 976b72b67..05457d01c 100644 --- a/src/network/net_lowlevel.cpp +++ b/src/network/net_lowlevel.cpp @@ -206,6 +206,26 @@ unsigned long NetResolveHost(const std::string &host) return INADDR_NONE; } +/** + * Return the system hostname. + */ +std::string NetGetHostname() +{ + char hostname_buffer[256]; +#ifdef _WIN32 + DWORD hostname_size = (DWORD)sizeof(hostname_buffer); + if (GetComputerNameA(hostname_buffer, &hostname_size)) { + return std::string(hostname_buffer); + } +#else + size_t hostname_size = sizeof(hostname_buffer); + if (gethostname(hostname_buffer, hostname_size) == 0) { + return std::string(hostname_buffer); + } +#endif + return "localhost"; +} + /** ** Get IP-addrs of local interfaces from Network file descriptor **