Network.h++
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
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 };
00104
00105 #endif // __ccxx_Network_hxx
00106
00107