416442bec4d4829c2ac20c7d4e43181829483b35
Stefan Schuermans implemented UDP v4 address...

Stefan Schuermans authored 12 years ago

1) /* Blinker
2)    Copyright 2011 Stefan Schuermans <stefan@blinkenarea.org>
3)    Copyleft GNU public license - http://www.gnu.org/copyleft/gpl.html
4)    a blinkenarea.org project */
5) 
6) #include <arpa/inet.h>
7) #include <netinet/in.h>
8) #include <sstream>
9) #include <stdlib.h>
10) #include <string>
11) #include <sys/socket.h>
12) #include <sys/types.h>
13) 
14) #include "Udp4Addr.h"
15) 
16) namespace Blinker {
17) 
18) /// constructor
19) Udp4Addr::Udp4Addr()
20) {
21)   m_addr.sin_family = AF_INET;
22)   m_addr.sin_port = htons(0);
23)   m_addr.sin_addr.s_addr = htonl(INADDR_NONE);
24) }
25) 
26) /// virtual destructor
27) Udp4Addr::~Udp4Addr()
28) {
29) }
30) 
31) /// return address family
32) int Udp4Addr::getFamily() const
33) {
34)   return AF_INET;
35) }
36) 
37) /**
38)  * @brief parse from string format
39)  * @param[in] str string format
40)  * @return if parsing was successful
41)  */
42) bool Udp4Addr::fromStr(const std::string &str)
43) {
44)   std::string::size_type posColon;
45)   std::string strIp, strPort;
46)   struct in_addr iaIp;
47)   unsigned long iPort;
48)   const char *szPort;
49)   char *szPortEnd;
50) 
51)   // split address into IP and port
52)   posColon = str.find(':');
53)   if (posColon == std::string::npos)
54)     return false;
55)   strIp = str.substr(0, posColon);
56)   strPort = str.substr(posColon + 1);
57) 
58)   // parse IP
59)   if (!inet_aton(strIp.c_str(), &iaIp))
60)     return false;
61) 
62)   // parse port
63)   szPort = strPort.c_str();
64)   iPort = strtoul(szPort, &szPortEnd, 10);
Stefan Schuermans fixed parsing address

Stefan Schuermans authored 12 years ago

65)   if (*szPort == 0 || *szPortEnd != 0)
Stefan Schuermans implemented UDP v4 address...

Stefan Schuermans authored 12 years ago

66)     return false;
67) 
68)   m_addr.sin_family = AF_INET;
69)   m_addr.sin_port = htons(iPort);
70)   m_addr.sin_addr = iaIp;
Stefan Schuermans fixed parsing address

Stefan Schuermans authored 12 years ago

71)   return true;