设为首页 加入收藏

TOP

1.2.2 开发准备(1)
2013-10-07 15:53:18 来源: 作者: 【 】 浏览:85
Tags:1.2.2 开发 准备

1.2.2  开发准备(1)

在具体实现本实例之前,需要掌握一些与本实例有关的基础知识。

1. IP基础

所谓IP地址,就是给每个连接在Internet上的主机分配的一个32bit的地址。按照TCP/IP协议规定,IP地址用二进制来表示,每个IP地址长32bit,比特换算成字节,就是4个字节。

例如一个采用二进制形式的IP地址是"00001010000000000000000000000001",这么长的地址,人们处理起来也太费劲了。为了方便人们的使用,IP地址经常被写成十进制的形式,中间使用句点符号"."分开不同的字节。于是,上面的IP地址可以表示为"10.0.0.1"。IP地址的这种表示法叫做"点分十进制表示法",这显然比1和0容易记忆得多。

Internet上的每台主机(Host) 都有一个唯一的IP地址。IP协议就是使用这个地址在主机之间传递信息,这是Internet能够运行的基础。IP地址的长度为32位,分为4段,每段8位,用十进制数字表示,每段数字范围为0~255,段与段之间用句点隔开,例如 159.226.1.1。

IP地址由两部分组成,一部分为网络地址,另一部分为主机地址。Internet委员会定义了5种IP地址类型以适合不同容量的网络,即A~E类。其中A、B、C类(见表1-4)由Internet NIC在全球范围内统一分配,D、E类为特殊地址。

表1-4  常用的A、B、C类IP地址

网络类别< xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

最大网络数

第一个可

用的网络号

最后一个可

用的网络号

每个网络中的

最大主机数

A

126

1

126

16777214

B

16382

128.1

191.254

65534

C

2097150

192.0.1

223.255.254

254

2. Winsock数据库查询函数

通过使用Winsock数据库查询函数,可以非常方便地获取某计算机的地址、名字和端口号。本实例是基于Winsock数据库查询函数实现的,接下来将简单介绍Winsock中数据库查询函数的基本知识。

Windows Sockets规范定义了如下数据库例程。

gethostbyaddr():从网络地址得到对应的名字(可能有多个)和地址,在某些情况下可能会阻塞。

gethostbyname():从主机名得到对应的名字(可能有多个)和地址,在某些情况下可能会阻塞。

gethostname():得到本地主机名,在某些情况下可能会阻塞。

getprotbyname():从协议名得到对应的协议名和数值,在某些情况下可能会阻塞。

getservbyname():从一个服务的名字得到对应的服务名以及端口号,在某些情况下可能会阻塞。

getservbyport():从一个端口号得到对应的服务名以及端口号,在某些情况下可能会阻塞。

正如我们先前提出的,Windows Sockets提供者有可能不采用依赖于本地数据库的方式来实现这些函数。某些数据库例程返回的指针(例如gethostbyname())指向的区域是由Windows Sockets函数库分配的。这些指针指向的数据是易失的。它们只在该线程的下一个Windows Sockets API调用前有效。此外,应用程序不应试图修改这个结构,或者释放其中的任何一部分。在一个线程中,这个结构只有一份拷贝。因此,应用程序应该在发出下一个Windows Sockets API调用以前把所需的信息拷贝下来。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇2.2.2 小试牛刀--模拟实现Windows.. 下一篇1.2.2 开发准备(2)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C++中智能指针的性能 (2025-12-25 03:49:29)
·如何用智能指针实现c (2025-12-25 03:49:27)
·如何在 C 语言中管理 (2025-12-25 03:20:14)
·C语言和内存管理有什 (2025-12-25 03:20:11)
·为什么C语言从不被淘 (2025-12-25 03:20:08)