X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fio%2Fraw_socket.cxx;h=bb08aae76a26b1e7f240a89cce4a903473e58827;hb=bc9b3f6ff1fcc5caa67c07ad99f971c0faacf91a;hp=cf7b20f7bf873b869ace2287e9093c3dc68c19cb;hpb=08003ceba99b6c81441896a5c60c14bd2352bce5;p=simgear.git diff --git a/simgear/io/raw_socket.cxx b/simgear/io/raw_socket.cxx index cf7b20f7..bb08aae7 100644 --- a/simgear/io/raw_socket.cxx +++ b/simgear/io/raw_socket.cxx @@ -311,6 +311,10 @@ bool IPAddress::lookupNonblocking(const char* host, IPAddress& addr) const char* IPAddress::getHost () const { + if (!addr) { + return NULL; + } + static char buf [32]; long x = ntohl(addr->sin_addr.s_addr); sprintf(buf, "%d.%d.%d.%d", @@ -321,21 +325,37 @@ const char* IPAddress::getHost () const unsigned int IPAddress::getIP () const { + if (!addr) { + return 0; + } + return addr->sin_addr.s_addr; } unsigned int IPAddress::getPort() const { + if (!addr) { + return 0; + } + return ntohs(addr->sin_port); } void IPAddress::setPort(int port) { + if (!addr) { + return; + } + addr->sin_port = htons(port); } unsigned int IPAddress::getFamily () const { + if (!addr) { + return 0; + } + return addr->sin_family; } @@ -363,7 +383,11 @@ const char* IPAddress::getLocalHost () bool IPAddress::getBroadcast () const { - return (addr->sin_addr.s_addr == INADDR_BROADCAST); + if (!addr) { + return false; + } + + return (addr->sin_addr.s_addr == INADDR_BROADCAST); } unsigned int IPAddress::getAddrLen() const @@ -381,6 +405,11 @@ struct sockaddr* IPAddress::getAddr() const return (struct sockaddr*) addr; } +bool IPAddress::isValid() const +{ + return (addr != NULL); +} + Socket::Socket () { handle = -1 ;