4 #include <netinet/in.h>
6 #include <msp/strings/format.h>
8 #include "sockaddr_private.h"
18 fill(addr, addr+4, 0);
21 InetAddr::InetAddr(const SysAddr &sa)
23 const sockaddr_in &sai = reinterpret_cast<const sockaddr_in &>(sa.addr);
24 addr[0] = sai.sin_addr.s_addr>>24;
25 addr[1] = sai.sin_addr.s_addr>>16;
26 addr[2] = sai.sin_addr.s_addr>>8;
27 addr[3] = sai.sin_addr.s_addr;
28 port = ntohs(sai.sin_port);
31 SockAddr::SysAddr InetAddr::to_sys() const
34 sa.size = sizeof(sockaddr_in);
35 sockaddr_in &sai = reinterpret_cast<sockaddr_in &>(sa.addr);
36 sai.sin_family = AF_INET;
37 sai.sin_addr.s_addr = (addr[0]<<24) | (addr[1]<<16) | (addr[2]<<8) | (addr[3]);
38 sai.sin_port = htons(port);
43 string InetAddr::str() const
45 string result = format("%d.%d.%d.%d", addr[0], addr[1], addr[2], addr[3]);
47 result += format(":%d", port);