X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Finet.cpp;fp=source%2Finet.cpp;h=181c73403cfa3606731d384abb90a056953f07b4;hb=f59eded7c3e162bbdfc6db424c9badc730017698;hp=0000000000000000000000000000000000000000;hpb=fab500d5bff644bb5637abd2f5e78baeb26b7f26;p=libs%2Fnet.git diff --git a/source/inet.cpp b/source/inet.cpp new file mode 100644 index 0000000..181c734 --- /dev/null +++ b/source/inet.cpp @@ -0,0 +1,48 @@ +/* $Id$ + +This file is part of libmspnet +Copyright © 2008 Mikkosoft Productions, Mikko Rasa +Distributed under the LGPL +*/ + +#include +#include "inet.h" + +using namespace std; + +namespace Msp { +namespace Net { + +InetAddr::InetAddr(): + addr(0), + port(0) +{ } + +InetAddr::InetAddr(sockaddr_in &sa): + addr(sa.sin_addr.s_addr), + port(sa.sin_port) +{ } + +InetAddr::InetAddr(in_addr_t a, in_port_t p): + addr(htonl(a)), + port(htons(p)) +{ } + +string InetAddr::str() const +{ + const unsigned char *ptr=reinterpret_cast(&addr); + return format("%d.%d.%d.%d:%d", static_cast(ptr[0]), static_cast(ptr[1]), static_cast(ptr[2]), static_cast(ptr[3]), ntohs(port)); +} + +unsigned InetAddr::fill_sockaddr(sockaddr &sa) const +{ + sockaddr_in &sai=reinterpret_cast(sa); + sai.sin_family=AF_INET; + sai.sin_addr.s_addr=addr; + sai.sin_port=port; + + return sizeof(sockaddr_in); +} + +} // namespace Net +} // namespace Msp