再论ACE_INET_Addr看封装

原创 2007年09月21日 16:33:00

 SOCKADDR本身是C的一个结构,C已经对它进行了封装,可惜使用的时候你要操作一大堆细节,这增大了出错率。

我们来看SOCKADDR为我们提供了一个什么样的功能。

1.它为其他部分提供信息。

我们把信息传递给sockaddr,以后传递sockaddr给需要地址信息的部分。

2.它提供查询功能

别人传递过来的sockaddr你可能要做检查合法性等若干需要获取信息的操作。

sockaddr说白了就是一个载体。存放了网络地址信息,再深刻一点就是一个ip地址和一个端口。

为了把直接使用sockaddr的所有细节隐藏起来,对涉及sockaddr的操作一并封装起来是必然要求。

我想ACE_INET_Addr的思想首要是为了隐藏信息。要不要考虑其他类的使用情况呢?我想这个是不必要的。如果你提供了该提供的,那使用者不会有任何无理要求。

这其实就是facade的设计要求使然。

把细节的操作格式化,譬如做成了函数,编译器可以捕获错误的使用。

我想ACE_INET_Addr给我的启示是,把容易出错且没有严格检查包含的行为、数据制定规则,由该规则保证容易出错的地方不会出错或在出错的时候提醒使用者。

在C++中,这个规则的检查者只有一个,他就是编译器。

所以制定这个规则的手段就要围绕编译器的检查来做文章,在这里,使用的是转化为函数利用编译器对函数的参数类型检查来做。

这个问题继续分析下去,我们可以得出:我们能借助编译器的,最多的也只有类型检查了。所以思考手段的方向转到什么情况下编译器要执行类型检查。

最常用的是函数调用。

ACE_INET_Addr地址类浅解析

说起网络编程,第一个我们必须想到的就是socket等系类函数,而这些函数的调用中有一个十分重要的参数sockaddr_in这个Ipv4的结构体,这个结构体表示了网络地址,即通信地址,但是玩过它的人都知...

ACE学习之ACE_INET_Addr,ACE_SOCK_Acceptor 源代码

ACE_INET_Addr 用来封装了基本的LINUX Socket的连接。   首先了解一个结构体 struct sockaddr_in { short s...

inet_addr函数讲解

The inet_addr() function converts the Internet host address cp from IPv4 numbers-and-dots notation i...

TCP/IP源码学习(58)——inet_select_addr函数分析

作者:gfree.wind@gmail.com 博客:blog.focus-linux.net   linuxfocus.blog.chinaunix.net    本文的copyleft归gf...
  • dyzok88
  • dyzok88
  • 2014年12月22日 16:42
  • 409

inet addr、bcast、mask

bcast:

inet_addr()和htonl()结合使用引发的connect()超时

Tcp通信使用的是网络字节序,所以一般都需要htonl()把ip地址转换成网络字节序,但如果ip已经是网络字节序了,再调用htonl就会导致不再是网络字节序了,引发严重后果,就是connect或者使用...

【VS开发】IP地址格式转换(htonl、ntohl;inet_addr、inet_ntoa)

1、htonl ()和ntohl( ) u_long PASCAL FAR ntohl (u_long netlong); u_short PASCAL FAR ntohs (u_shor...

函数inet_addr和inet_ntoa,本机字节顺序与网络字节顺序的转函数的总结

inet_addr  : 将"数字+句点"的格式的IP地址转换到unsigned long中,返回值已经是按照网络字节顺序了 相反inet_ntoa :把类型为struct in_addr的数据转化...

IP地址格式转换(htonl、ntohl;inet_addr、inet_ntoa)

1、htonl ()和ntohl( ) u_long PASCAL FAR ntohl (u_long netlong); u_short PASCAL FAR ntohs (u_short ne...

htonl()_htons()及inet_ntoa()_inet_addr()的用法

现在我们很幸运,因为我们有很多的函数来方便地操作 IP 地址。没有 必要用手工计算它们,也没有必要用"   首先,假设你已经有了一个sockaddr_in结构体ina,你有一个IP地址"132.2...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:再论ACE_INET_Addr看封装
举报原因:
原因补充:

(最多只允许输入30个字)