正在加载图片...
chhs 第章地址家族和名字解析07 应用打算与运行于本地或远程计算机上的服务进行通信时,除了要知道远程计算机的IP 地址外,还必须知道服务的端口号。在使用TCP和UDP时,应用必须决定计划通过哪些端口 进行通信。有几个“已知的端口号”是服务器服务保留的,这些服务支持比TCP高级的协议 (比如TCP和SPX)。举个例子来说,端口21是为FTP预留的,端口80是为FTTP预留的。正如 前面提到的那样,已知的服务一般都采用1~1023之间的端口号来设置协议。如果你正在开发 个不使用任何一种已知服务的TCP应用,就要考虑采用1023以上的端口,以免重复。通过 调用 getservbyname和 WSAAsyncGetServ By Name函数,便可获得已知服务的端口号。这两个 函数只从名为 services的文件中获得静态信息。 Windows95和 Windows98中,服务文件位于 % WINDOWS%下面:在 Windows nt和 Windows2000中,则位于% WINDOWS% System32 Drivers\Etc下面。 getservbyname函数的定义如下 struct servent FAR* getservbyname( const char FAR name, const char FAR proto name参数代表准备查找的服务名。举个例子来说,如果你正在定位FTP端口,就应该把 name参数设成指向字串“ftp"。 proto参数随便指向一个字串,这个字串表明name中的服务是 在这个参数中的协议下面注册的。 WSAAsyncGetServ By Name函数是 getservbyname函数的异 Windows2000中有一个新的注册和请求TCP及UDP服务信息的动态方法。服务器应用可 利用 WSASetservice函数来注册服务名、IP地址和服务的端口号。客户机应用可利用这三个API 函数的组合请求这条服务信息,这三个函数是 WSALookup Service Begin、 WSALookup ServiceNext 和 WSALookupServiceEnd。第10章将对此进行讨论 62红外线套接字 红外线套接字称为 IrSock,它是一个令人兴奋不已的新技术,首先在 Windows平台上亮相 红外线套接字允许两台计算机通过红外线串行端口进行通信。目前,红外线套接字可在 Windows98和 Windows2000上使用。红外线套接字不同于传统意义上针对便携机的短暂性而 设计的套接字。它们展示了一种新的名字解析模型,下一小节中将对此进行讨论 621定址 由于带有“红外线数据联盟”( Infrared Data association,IrDA)设备的大多数计算机可 能经常性地拆卸,传统的名字解析方案不能满足人们的需求。传统解析方法充当命名服务器 之类的静态资源——人们在移动正在运行网络客户任务的手提式电脑或膝上型计算机时,是 不能使用这些资源的。为解决这一问题,IrDA就设计成了这样:无须在整个大型网络上,只 须用一种特定的方式浏览范围内的资源,因此,IDA没有使用标准的 Winsock命名服务函数和 IP定址。相反,命名服务已并入通信流,另外还引入了一个新的地址家族,以支持与红外线 串行端口绑定在一起的服务。 IrSock地址结构中包含一个服务名(它对绑定和连接调用中所使 用的应用进行描述)和一个设备标识符(描述运行服务的设备)。这里的服务名和设备标识符 类似于传统TCPP套接字所用的IP地址和端口号字元组。 IrSock地址结构的定义如下 typedef struct sockaddr_irda t第6章计地址家族和名字解析计计107 下载 应用打算与运行于本地或远程计算机上的服务进行通信时,除了要知道远程计算机的 I P 地址外,还必须知道服务的端口号。在使用 T C P和U D P时,应用必须决定计划通过哪些端口 进行通信。有几个“已知的端口号”是服务器服务保留的,这些服务支持比 T C P高级的协议 (比如T C P和S P X)。举个例子来说,端口 2 1是为F T P预留的,端口8 0是为F T T P预留的。正如 前面提到的那样,已知的服务一般都采用 1 ~ 1 0 2 3之间的端口号来设置协议。如果你正在开发 一个不使用任何一种已知服务的 T C P应用,就要考虑采用 1 0 2 3以上的端口,以免重复。通过 调用g e t s e r v b y n a m e和W S A A s y n c G e t S e r v B y N a m e函数,便可获得已知服务的端口号。这两个 函数只从名为s e r v i c e s的文件中获得静态信息。 Windows 95和Windows 98中,服务文件位于 % W I N D O W S%下面;在 Windows NT 和 Windows 2000 中,则位于% W I N D O W S% \ S y s t e m 3 2 \ D r i v e r s \ E t c下面。g e t s e r v b y n a m e函数的定义如下: n a m e参数代表准备查找的服务名。举个例子来说,如果你正在定位 F T P端口,就应该把 n a m e参数设成指向字串“ f t p”。p r o t o参数随便指向一个字串,这个字串表明 n a m e中的服务是 在这个参数中的协议下面注册的。 W S A A s y n c G e t S e r v B y N a m e函数是g e t s e r v b y n a m e函数的异 步版。 Windows 2000中有一个新的注册和请求 T C P及U D P服务信息的动态方法。服务器应用可 利用W S A S e t S e r v i c e函数来注册服务名、I P地址和服务的端口号。客户机应用可利用这三个 A P I 函数的组合请求这条服务信息,这三个函数是W S A L o o k u p S e r v i c e B e g i n、W S A L o o k u p S e r v i c e N e x t 和W S A L o o k u p S e r v i c e E n d。第1 0章将对此进行讨论。 6.2 红外线套接字 红外线套接字称为I r S o c k,它是一个令人兴奋不已的新技术,首先在Wi n d o w s平台上亮相。 红外线套接字允许两台计算机通过红外线串行端口进行通信。目前,红外线套接字可在 Windows 98和Windows 2000上使用。红外线套接字不同于传统意义上针对便携机的短暂性而 设计的套接字。它们展示了一种新的名字解析模型,下一小节中将对此进行讨论。 6.2.1 定址 由于带有“红外线数据联盟”(Infrared Data Association, IrDA)设备的大多数计算机可 能经常性地拆卸,传统的名字解析方案不能满足人们的需求。传统解析方法充当命名服务器 之类的静态资源—人们在移动正在运行网络客户任务的手提式电脑或膝上型计算机时,是 不能使用这些资源的。为解决这一问题, I r D A就设计成了这样:无须在整个大型网络上,只 须用一种特定的方式浏览范围内的资源,因此, I r D A没有使用标准的Wi n s o c k命名服务函数和 I P定址。相反,命名服务已并入通信流,另外还引入了一个新的地址家族,以支持与红外线 串行端口绑定在一起的服务。 I r S o c k地址结构中包含一个服务名(它对绑定和连接调用中所使 用的应用进行描述)和一个设备标识符(描述运行服务的设备)。这里的服务名和设备标识符 类似于传统T C P / I P套接字所用的I P地址和端口号字元组。I r S o c k地址结构的定义如下:
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有