]> git.tdb.fi Git - libs/net.git/blob - source/inet.cpp
Fix a comparison operator on win32
[libs/net.git] / source / inet.cpp
1 /* $Id$
2
3 This file is part of libmspnet
4 Copyright © 2008  Mikkosoft Productions, Mikko Rasa
5 Distributed under the LGPL
6 */
7
8 #include <msp/strings/formatter.h>
9 #include "inet.h"
10
11 using namespace std;
12
13 namespace Msp {
14 namespace Net {
15
16 InetAddr::InetAddr():
17         addr(0),
18         port(0)
19 { }
20
21 InetAddr::InetAddr(sockaddr_in &sa):
22         addr(sa.sin_addr.s_addr),
23         port(sa.sin_port)
24 { }
25
26 InetAddr::InetAddr(in_addr_t a, in_port_t p):
27         addr(htonl(a)),
28         port(htons(p))
29 { }
30
31 string InetAddr::str() const
32 {
33         const unsigned char *ptr=reinterpret_cast<const unsigned char *>(&addr);
34         return format("%d.%d.%d.%d:%d", static_cast<int>(ptr[0]), static_cast<int>(ptr[1]), static_cast<int>(ptr[2]), static_cast<int>(ptr[3]), ntohs(port));
35 }
36
37 unsigned InetAddr::fill_sockaddr(sockaddr &sa) const
38 {
39         sockaddr_in &sai=reinterpret_cast<sockaddr_in &>(sa);
40         sai.sin_family=AF_INET;
41         sai.sin_addr.s_addr=addr;
42         sai.sin_port=port;
43
44         return sizeof(sockaddr_in);
45 }
46
47 } // namespace Net
48 } // namespace Msp