⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 5-2.html

📁 介绍各种平台进行SOCKET编程的好东东。
💻 HTML
📖 第 1 页 / 共 3 页
字号:
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80">
<META NAME="Generator" CONTENT="Microsoft Word 97">
<TITLE>5</TITLE>
</HEAD>
<BODY>

<B><FONT FACE="黑体" LANG="ZH-CN" SIZE=5><P><A NAME="_Toc336626854"><A NAME="_Toc336792937"><A NAME="_Toc336793413"></FONT><FONT FACE="Arial" SIZE=5>5.2 </FONT><FONT FACE="黑体" LANG="ZH-CN" SIZE=5>数据库函数</A></A></A></P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=5><P><A NAME="_Toc336626855"><A NAME="_Toc336792938"><A NAME="_Toc336793414"></FONT><FONT SIZE=5>5.2.1 gethostbyaddr()</A></A></A></P>
</B></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">简述:</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">    </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>返回对应于给定地址的主机信息。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">&#9;</FONT><FONT SIZE=3>#include &lt;winsock.h&gt;</P>
<P ALIGN="JUSTIFY">&#9;</P>
<P ALIGN="JUSTIFY">&#9;struct hostent FAR *PASCAL FAR gethostbyaddr(const char </P>
<P ALIGN="JUSTIFY">&#9;FAR * addr, int len, int type);</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">&#9;addr</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>:指向网络字节顺序地址的指针。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">&#9;</FONT><FONT SIZE=3>len</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>:</FONT><FONT SIZE=3> </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>地址的长度,在</FONT><FONT SIZE=3>PF_INET</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>类型地址中为</FONT><FONT SIZE=3>4</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">&#9;</FONT><FONT SIZE=3>type</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>:地址类型,应为</FONT><FONT SIZE=3>PF_INET</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">注释:</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">    gethostbyaddr()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>返回对应于给定地址的包含主机名字和地址信息的</FONT><FONT SIZE=3>hostent</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>结构指针。结构的声明如下:</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">&#9;</FONT><FONT SIZE=3>struct hostent {</P>
<P ALIGN="JUSTIFY">&#9;&#9;char FAR *        h_name;</P>
<P ALIGN="JUSTIFY">&#9;&#9;char FAR * FAR *  h_aliases;</P>
<P ALIGN="JUSTIFY">&#9;&#9;short             h_addrtype;</P>
<P ALIGN="JUSTIFY">&#9;&#9;short             h_length;</P>
<P ALIGN="JUSTIFY">&#9;&#9;char FAR * FAR *  h_addr_list;</P>
<P ALIGN="JUSTIFY">&#9;};</P>
<P ALIGN="JUSTIFY"></P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">结构的成员有:</P>
<P ALIGN="JUSTIFY">成员</FONT><FONT SIZE=3>                 </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>用途</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">h_name            </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>正规的主机名字(</FONT><FONT SIZE=3>PC</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">h_aliases         </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>一个以空指针结尾的可选主机名队列。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">h_addrtype        </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>PF_INET</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">h_legnth          </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>每个地址的长度(字节数),对应于</FONT><FONT SIZE=3>PF_INET</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>这个域应该为</FONT><FONT SIZE=3>4</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">h_addr_list       </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>应该以空指针结尾的主机地址的列表,返回的地址是以网络顺序排列的</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">为了保证其他旧的软件的兼容性,</FONT><FONT SIZE=3>h_addr_list[0]</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>被定义为宏</FONT><FONT SIZE=3>h_addr</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">&#9;返回的指针指向一个由</FONT><FONT SIZE=3>Windows Sockets</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>实现分配的结构。应用程序不应该试图修改这个结构或者释放它的任何部分。此外,每一线程仅有一份这个结构的拷贝,所以应用程序应该在发出其他</FONT><FONT SIZE=3>Windows Scokets API</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>调用前,把自己所需的信息拷贝下来。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">返回值:</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">    </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>如果没有错误发生,</FONT><FONT SIZE=3>gethostbyaddr()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>返回如上所述的一个指向</FONT><FONT SIZE=3>hostent</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>结构的指针,否则,返回一个空指针。应用程序可以通过</FONT><FONT SIZE=3>WSAGetLastError()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>来得到一个特定的错误代码。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">错误代码:</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSANOTINTIALISED  </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>WSAStartup()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAENTDOWN        Windows Sockets</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>实现检测到了网络子系统的错误。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAHOST_NOT_FOUND </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>没有找到授权应答主机。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSATRY_AGAIN      </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>没有找到非授权主机,或者</FONT><FONT SIZE=3>SERVERFAIL</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSANO_RECOVERY    </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>无法恢复的错误,</FONT><FONT SIZE=3>FORMERR</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,</FONT><FONT SIZE=3>REFUSED</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,</FONT><FONT SIZE=3>NOTIMP</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSANO_DATA        </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>有效的名字,但没有关于请求类型的数据记录。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAEINPROGRESS    </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>一个阻塞的</FONT><FONT SIZE=3>Windows Sockets</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>操作正在进行。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAEINTR          </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>阻塞调用被</FONT><FONT SIZE=3>WSACancelBlockingCall()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>取消了</FONT><FONT SIZE=3>.</P>
<P ALIGN="JUSTIFY"></P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">参见</FONT><FONT SIZE=3>: WSAAsyncGetHostByAddr(), gethostbyname()</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY"> </P>
</FONT><B><FONT FACE="宋体" LANG="ZH-CN" SIZE=5><P><A NAME="_Toc336626856"><A NAME="_Toc336792939"><A NAME="_Toc336793415"></FONT><FONT SIZE=5>5.2.2 gethostbyname()</A></A></A></P>
</B></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">简述:</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">    </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>返回对应于给定主机名的主机信息。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">&#9;</FONT><FONT SIZE=3>#include &lt;winsock.h&gt;</P>
<P ALIGN="JUSTIFY">&#9;</P>
<P ALIGN="JUSTIFY">&#9;struct hostent FAR *PASCAL FAR gethostbyname(const char </P>
<P ALIGN="JUSTIFY">&#9;FAR * addr);</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">&#9;name</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>:指向主机名的指针。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">注释:</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">    gethostbyname()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>返回对应于给定主机名的包含主机名字和地址信息的</FONT><FONT SIZE=3>hostent</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>结构指针。结构的声明与</FONT><FONT SIZE=3>gethostaddr()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中一致。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">&#9;返回的指针指向一个由</FONT><FONT SIZE=3>Windows Sockets</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>实现分配的结构。应用程序不应该试图修改这个结构或者释放它的任何部分。此外,每一线程仅有一份这个结构的拷贝,所以应用程序应该在发出其他</FONT><FONT SIZE=3>Windows Scokets API</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>调用前,把自己所需的信息拷贝下来。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">&#9;</FONT><FONT SIZE=3>gethostbyname()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>实现没有必要识别传送给它的</FONT><FONT SIZE=3>IP</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>地址串。对于这样的请求,应该把</FONT><FONT SIZE=3>IP</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>地址串当作一个未知主机名同样处理。如果应用程序有</FONT><FONT SIZE=3>IP</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>地址串需要处理,它应该使用</FONT><FONT SIZE=3>inet_addr()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>函数把地址串转换为</FONT><FONT SIZE=3>IP</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>地址,然后调用</FONT><FONT SIZE=3>gethostbyaddr()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>来得到</FONT><FONT SIZE=3>hostent</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>结构。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">返回值:</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">    </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>如果没有错误发生,</FONT><FONT SIZE=3>gethostbyname()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>返回如上所述的一个指向</FONT><FONT SIZE=3>hostent</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>结构的指针,否则,返回一个空指针。应用程序可以通过</FONT><FONT SIZE=3>WSAGetLastError()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>来得到一个特定的错误代码。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">错误代码:</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSANOTINTIALISED  </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>WSAStartup()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAENTDOWN        Windows Sockets</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>实现检测到了网络子系统的错误。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAHOST_NOT_FOUND </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>没有找到授权应答主机。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSATRY_AGAIN      </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>没有找到非授权主机,或者</FONT><FONT SIZE=3>SERVERFAIL</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSANO_RECOVERY    </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>无法恢复的错误,</FONT><FONT SIZE=3>FORMERR</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,</FONT><FONT SIZE=3>REFUSED</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,</FONT><FONT SIZE=3>NOTIMP</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSANO_DATA        </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>有效的名字,但没有关于请求类型的数据记录。</P>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -