ACE_INET_Addr类,在这个ACE_网络框架中,应该是比较重要的辅助类,该类主要封装了C SOCKET 的地址对象,通过外观封装的模式,把struct sockaddr_in封装在内。方便用户的操作。
因此个人认为掌握此类的常用构造方法和常用的成员函数,并深刻的理解,对于后续的学习ACE或者开发ACE网络应用程序应该会起到很大的帮助。工欲用其器、必先利其器。就先让我们把ACE_INET_Addr对象深刻的牢记在心中吧。
- /* -*- C++ -*- */
- //=============================================================================
- /**
- * @file INET_Addr.h
- *
- * $Id: INET_Addr.h 78617 2007-06-27 20:40:19Z mesnier_p $
- *
- * @author Douglas C. Schmidt <schmidt@cs.wustl.edu>
- */
- //=============================================================================
- #ifndef ACE_INET_ADDR_H
- #define ACE_INET_ADDR_H
- #include /**/ "ace/pre.h"
- #include "ace/Sock_Connect.h"
- #if !defined (ACE_LACKS_PRAGMA_ONCE)
- # pragma once
- #endif /* ACE_LACKS_PRAGMA_ONCE */
- #include "ace/Addr.h"
- #if defined(ACE_VXWORKS)
- // Needed to get INET_ADDR_LEN
- # include /**/ "inetLib.h"
- #endif /* ACE_VXWORKS */
- ACE_BEGIN_VERSIONED_NAMESPACE_DECL
- /**
- * @class ACE_INET_Addr
- *
- * @brief Defines a C++ wrapper facade for the Internet domain address
- * family format.
- */
- class ACE_Export ACE_INET_Addr : public ACE_Addr
- {
- public:
- // = Initialization methods.
- /// Default constructor.
- /// 默认构造函数
- ACE_INET_Addr (void);
- /// Copy constructor.
- /// 拷贝构造函数
- ACE_INET_Addr (const ACE_INET_Addr &);
- /// Creates an ACE_INET_Addr from a sockaddr_in structure.
- /// 使用参数@addr 地址初始化ACE_INET_Addr对象。
- /// 参数@len 为 @addr结构地址对象的长度,使用 sizeof(strcut sockaddr_in)
- ACE_INET_Addr (const sockaddr_in *addr, int len);
- /// Creates an ACE_INET_Addr from a <port_number> and the remote
- /// <host_name>. The port number is assumed to be in host byte order.
- /// To set a port already in network byte order, please @see set().
- /// Use address_family to select IPv6 (PF_INET6) vs. IPv4 (PF_INET).
- /// 使用参数 @port_number 和 host_name 构造一个ACE_INET_Addr对象。
- /// @port_number应该为主机字节序,构造函数需要把它转换了网络字节序。
- /// 如果port_number为网络字节序,请使用 set成员函数或者set_port_number成员函数。
- /// @address_family 用于指定ACE_INET_Addr的地址类型PF_INET(IPv4)或者PF_INET6(IPv6)
- ACE_INET_Addr (u_short port_number,
- const char host_name[],
- int address_family = AF_UNSPEC);
- /**
- * Initializes an ACE_INET_Addr from the <address>, which can be
- * "ip-number:port-number" (e.g., "tango.cs.wustl.edu:1234" or
- * "128.252.166.57:1234"). If there is no ':' in the <address> it
- * is assumed to be a port number, with the IP address being
- * INADDR_ANY.
- * 使用参数@address初始化一个ACE_INET_Addr对象。
- * address的格式为 ip-number:port-number 或者 port-number.
- * ip-number 可以为点分号的IP地址,也可是是域名地址。
- * 如果参数@address没有提供 ip-number,只提供port-number时,地址被初始化为INADDR_ANY
- * port-number 为主机字节序。
- */
- explicit ACE_INET_Addr (const char address[],
- int address_family = AF_UNSPEC);
- /**
- * Creates an ACE_INET_Addr from a <port_number> and an Internet
- * <ip_addr>. This method assumes that <port_number> and <ip_addr>
- * are in host byte order. If you have addressing information in
- * network byte order, @see set().
- * 使用主机字节序的@port_number 和 @ip_addr初始化一个ACE_INET_Addr对象。
- * 如port_number或者 ip