📄 6-2.html
字号:
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80">
<META NAME="Generator" CONTENT="Microsoft Word 97">
<TITLE>6</TITLE>
</HEAD>
<BODY>
<B><FONT FACE="黑体" LANG="ZH-CN" SIZE=5><P><A NAME="_Toc336626881"><A NAME="_Toc336792964"><A NAME="_Toc336793440"></FONT><FONT FACE="Arial" SIZE=5>6.2 </FONT><FONT FACE="黑体" LANG="ZH-CN" SIZE=5>与</FONT><FONT FACE="Arial" SIZE=5>Windows Socket 1.1</FONT><FONT FACE="黑体" LANG="ZH-CN" SIZE=5>应用程序的向后兼容性</A></A></A></P>
</B></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">	</FONT><FONT SIZE=3>Windows Socket 2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>与</FONT><FONT SIZE=3>Windows Sockets 1.1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>在两个基础上向后兼容:源码和二进制代码。这就实现了</FONT><FONT SIZE=3>Windows Sockets</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>应用程序和任何版本的</FONT><FONT SIZE=3>Windows Sockets</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>实现之间的最大的互操作性,而且也减少了</FONT><FONT SIZE=3>Windows Sockets</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>应用程序使用者,网络协议栈提供者和服务提供者的许多痛苦。现有的</FONT><FONT SIZE=3>Windows Sockets 1.1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>兼容的应用程序可以在</FONT><FONT SIZE=3>Windows Sockets 2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>实现上不加修改的运行,只要有一个</FONT><FONT SIZE=3>TCP/IP</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>协议栈被安装。</P>
<P ALIGN="JUSTIFY"> </P>
</FONT><B><FONT FACE="宋体" LANG="ZH-CN" SIZE=5><P><A NAME="_Toc336626882"><A NAME="_Toc336792965"><A NAME="_Toc336793441"></FONT><FONT SIZE=5>6.2.1 </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=5>源码的兼容性</A></A></A></P>
</B></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">	</FONT><FONT SIZE=3>Windows Sockets 2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中的源码兼容性意味着所有的</FONT><FONT SIZE=3>Windows Sockets 1.1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>版的</FONT><FONT SIZE=3>API</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>在</FONT><FONT SIZE=3>Windows Sockets 2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中都被保留了下来。这意味着现有的</FONT><FONT SIZE=3>Windows Sockets 1.1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>应用程序的原程序可以被简单的移植到</FONT><FONT SIZE=3>Windows Sockets 2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>系统上运行。程序员需要做的只是包含新的头文件-</FONT><FONT SIZE=3>WINSOCK2.H</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>和简单的与合适的</FONT><FONT SIZE=3>Windows Sockets 2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>函数库的连接。应用程序开发者应该把这种工作看作是完全转向</FONT><FONT SIZE=3>Windows Sockets 2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>的第一步,因为有许多方式可以使用</FONT><FONT SIZE=3>Windows Sockets 2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中的新函数来提高原来的</FONT><FONT SIZE=3>Windows Sockets 1.1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>应用程序的运行性能。</P>
<P ALIGN="JUSTIFY"> </P>
</FONT><B><FONT FACE="宋体" LANG="ZH-CN" SIZE=5><P><A NAME="_Toc336626883"><A NAME="_Toc336792966"><A NAME="_Toc336793442"></FONT><FONT SIZE=5>6.2.2 </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=5>二进制兼容性</A></A></A></P>
</B></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">	在设计</FONT><FONT SIZE=3>Windows Sockets 2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>时的一个主要目标就是使得现有的</FONT><FONT SIZE=3>Windows Sockets 1.1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>应用程序在二进制级别上能够不加修改的应用于</FONT><FONT SIZE=3>Windows Sockets 2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>之上。由于</FONT><FONT SIZE=3>Windows Sockets 1.1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>是基于</FONT><FONT SIZE=3>TCP/IP</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>上的,二进制兼容性就要求</FONT><FONT SIZE=3>Windows Sockets 2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>系统提供基于</FONT><FONT SIZE=3>TCP/IP</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>上的</FONT><FONT SIZE=3>Windows Sockets 2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>的传输和名字解析服务。为了</FONT><FONT SIZE=3>Windows Sockets 1.1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>应用程序能在这种意义上运行,</FONT><FONT SIZE=3>Windows Sockets 2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>系统提供了一个附加的组件-</FONT><FONT SIZE=3>Windows Sockets 1.1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>的</FONT><FONT SIZE=3>DLL</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。</FONT><FONT SIZE=3>Windows Sockets 2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>安装时的提示保证了在终端机用户引进</FONT><FONT SIZE=3>Windows Sockets 2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>系统时不会对已有的</FONT><FONT SIZE=3>Windows Sockets</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>软件环境有任何影响。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY"><IMG SRC="Image11.gif" WIDTH=517 HEIGHT=306></P>
<P ALIGN="JUSTIFY"></P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY"> </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>图</FONT><FONT SIZE=3>6-2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>:与</FONT><FONT SIZE=3>Windows Sockets 1.1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>二进制兼容性结构图</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">	一个完全的</FONT><FONT SIZE=3>Windows Sockets 1.1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>二进制兼容的必要的前提是在系统上已经安装了至少一个</FONT><FONT SIZE=3>TCP/IP</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>协议栈并且在</FONT><FONT SIZE=3>Windows Sockets 2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中做了注册。</FONT><FONT SIZE=3>Windows Sockets 1.1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>目前通过</FONT><FONT SIZE=3>WSAData</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>结构中的某些元素来得到关于底层</FONT><FONT SIZE=3>TCP/IP</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>协议栈的信息(例如通过</FONT><FONT SIZE=3>WSAStartup()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>函数调用),这些信息包括</FONT><FONT SIZE=3>iMaxSockets</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,</FONT><FONT SIZE=3>iMaxUdpDg</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>和</FONT><FONT SIZE=3>IPVendorInfo</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。但是在</FONT><FONT SIZE=3>Windows Sockets 2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中,应用程序应该知道忽略这些信息,因为这些值不能统一地适用于所有协议栈。不过</FONT><FONT SIZE=3>DLL</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>必须仍然提供这些值以免破坏</FONT><FONT SIZE=3>Windows Sockets 1.1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>的应用程序。这些信息只能从(因此也只能应用于)缺省的</FONT><FONT SIZE=3>TCP/IP</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>服务提供者得到。缺省的</FONT><FONT SIZE=3>TCP/IP</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>服务提供者是由</FONT><FONT SIZE=3>WSAEnumProtocols()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>调用返回的</FONT><FONT SIZE=3>PROTOCOL_INFO</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>结构缓冲区的第一条</FONT><FONT SIZE=3>TCP/IP</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>协议栈。</P>
<P ALIGN="JUSTIFY"></P></FONT></BODY>
</HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -