Network.h++

Go to the documentation of this file.
00001 /* ---------------------------------------------------------------------------
00002    commonc++ - A C++ Common Class Library
00003    Copyright (C) 2005-2012  Mark A Lindner
00004 
00005    This file is part of commonc++.
00006 
00007    This library is free software; you can redistribute it and/or
00008    modify it under the terms of the GNU Library General Public
00009    License as published by the Free Software Foundation; either
00010    version 2 of the License, or (at your option) any later version.
00011 
00012    This library is distributed in the hope that it will be useful,
00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00015    Library General Public License for more details.
00016 
00017    You should have received a copy of the GNU Library General Public
00018    License along with this library; if not, write to the Free
00019    Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00020    ---------------------------------------------------------------------------
00021 */
00022 
00023 #ifndef __ccxx_Network_hxx
00024 #define __ccxx_Network_hxx
00025 
00026 #include <commonc++/Common.h++>
00027 #include <commonc++/NetworkInterface.h++>
00028 #include <commonc++/String.h++>
00029 #include <commonc++/SystemException.h++>
00030 
00031 #ifdef CCXX_OS_POSIX
00032 #include <netdb.h>
00033 #endif
00034 
00035 #include <vector>
00036 
00037 namespace ccxx {
00038 
00039 enum NetProtocol { ProtoAny, ProtoTCP, ProtoUDP };
00040 
00046 class COMMONCPP_API Network
00047 {
00048   friend class InetAddress;
00049 
00050   public:
00051 
00059   static size_t getInterfaces(std::vector<NetworkInterface>& list)
00060     throw(SystemException);
00061 
00070   static uint16_t getPortForService(const String &service, NetProtocol& proto)
00071     throw();
00072 
00081   static String getServiceForPort(uint16_t port, NetProtocol& proto)
00082     throw();
00083 
00084   private:
00085 
00086   static int getHostByName(const char *name, struct hostent *ret,
00087                            char *buffer, int buflen, struct hostent **result,
00088                            int *h_errnop);
00089 
00090   static int getHostByAddr(const char *addr, int length, int type,
00091                            struct hostent *ret, char *buffer, int buflen,
00092                            struct hostent **result, int *h_errnop);
00093 
00094   static int getServByName(const char *name, const char *proto,
00095                            struct servent *ret, char *buffer, int buflen,
00096                            struct servent **result);
00097 
00098   static int getServByPort(int port, const char *proto, struct servent *ret,
00099                            char *buffer, int buflen,
00100                            struct servent **result);
00101 };
00102 
00103 }; // namespace ccxx
00104 
00105 #endif // __ccxx_Network_hxx
00106 
00107 /* end of header file */
Generated on Sat Nov 26 16:49:07 2011 for libcommonc++ by  doxygen 1.6.3