- Main Page
- Namespaces
- Classes
- Files

- File List
- File Members

gresolver_ipv4.cpp
Go to the documentation of this file.
1 //
2 // Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
3 //
4 // This program is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with this program. If not, see <http://www.gnu.org/licenses/>.
16 // ===
17 //
18 // gresolver_ipv4.cpp
19 //
20
21 #include "gdef.h"
22 #include "gresolver.h"
23
24 unsigned int GNet::Resolver::resolveService( const std::string & service_name , bool udp , std::string & error )
25 {
26 servent * service = ::getservbyname( service_name.c_str() , udp ? "udp" : "tcp" ) ;
27 if( service == NULL )
28 {
29 error = "invalid service name" ;
30 return 0U ;
31 }
32 else
33 {
34 Address service_address( *service ) ;
35 return service_address.port() ;
36 }
37 }
38
39 std::string GNet::Resolver::resolveHost( const std::string & host_name , unsigned int port , ResolverInfo & result )
40 {
41 hostent * host = ::gethostbyname( host_name.c_str() ) ;
42 if( host == NULL )
43 return std::string("no such host: \"") + host_name + "\"" ;
44
45 const char * h_name = host->h_name ;
46 result.update( Address(*host,port) , std::string(h_name?h_name:"") ) ;
47 return std::string() ;
48 }
49
gresolver.h