1 /**************************************************************************
2 ** (c) Copyright 2012, Andromeda Technology & Automation
3 ***************************************************************************
4 ** MODULE INFORMATION *
5 ***********************
6 ** FILE NAME : service.cpp
7 ** SYSTEM NAME : Network and socket classes
8 ** VERSION NUMBER : 0.1
10 ** DESCRIPTION : Service class implementation
12 ** EXPORTED OBJECTS : class Service
15 ***************************************************************************
16 ** ADMINISTRATIVE INFORMATION *
17 ********************************
18 ** ORIGINAL AUTHOR : Arjen Baart - arjen@andromeda.nl
19 ** CREATION DATE : Mar 02, 2012
20 ** LAST UPDATE : Mar 07, 2012
22 **************************************************************************/
27 /*=========================================================================
28 ** NAME : Service::FindAddress
31 ** RETURN VALUE : List of port numbers
33 ** DESCRIPTION : Find all ports given the service name.
39 ** LAST MODIFIED : Mar 05, 2012
40 **=========================================================================
43 std::list<Port> Service::FindAddress()
45 struct addrinfo hints;
46 struct addrinfo *res, *rp;
48 hints.ai_family = AF_UNSPEC; /* Allow IPv4 or IPv6 */
49 hints.ai_socktype = SOCK_DGRAM; /* Datagram socket */
51 hints.ai_protocol = 0; /* Any protocol */
52 hints.ai_canonname = NULL;
56 int error = getaddrinfo(NULL, name, NULL, &res);
59 for (rp = res; rp != NULL; rp = rp->ai_next)
61 struct sockaddr_in *sa;
62 sa = (struct sockaddr_in *)rp->ai_addr;
63 std::cout << "Port " << htons(sa->sin_port) << " socket " << rp->ai_socktype << "\n";
65 Port p(sa->sin_port, rp->ai_socktype);