?? 5-2.html
字號:
<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>數(shù)據(jù)庫函數(shù)</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>返回對應(yīng)于給定地址的主機信息。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">	</FONT><FONT SIZE=3>#include <winsock.h></P>
<P ALIGN="JUSTIFY">	</P>
<P ALIGN="JUSTIFY">	struct hostent FAR *PASCAL FAR gethostbyaddr(const char </P>
<P ALIGN="JUSTIFY">	FAR * addr, int len, int type);</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">	addr</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>:指向網(wǎng)絡(luò)字節(jié)順序地址的指針。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">	</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">	</FONT><FONT SIZE=3>type</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>:地址類型,應(yīng)為</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>返回對應(yīng)于給定地址的包含主機名字和地址信息的</FONT><FONT SIZE=3>hostent</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>結(jié)構(gòu)指針。結(jié)構(gòu)的聲明如下:</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">	</FONT><FONT SIZE=3>struct hostent {</P>
<P ALIGN="JUSTIFY">		char FAR * h_name;</P>
<P ALIGN="JUSTIFY">		char FAR * FAR * h_aliases;</P>
<P ALIGN="JUSTIFY">		short h_addrtype;</P>
<P ALIGN="JUSTIFY">		short h_length;</P>
<P ALIGN="JUSTIFY">		char FAR * FAR * h_addr_list;</P>
<P ALIGN="JUSTIFY">	};</P>
<P ALIGN="JUSTIFY"></P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">結(jié)構(gòu)的成員有:</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>正規(guī)的主機名字(</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>一個以空指針結(jié)尾的可選主機名隊列。</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>每個地址的長度(字節(jié)數(shù)),對應(yīng)于</FONT><FONT SIZE=3>PF_INET</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>這個域應(yīng)該為</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>應(yīng)該以空指針結(jié)尾的主機地址的列表,返回的地址是以網(wǎng)絡(luò)順序排列的</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">	返回的指針指向一個由</FONT><FONT SIZE=3>Windows Sockets</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>實現(xiàn)分配的結(jié)構(gòu)。應(yīng)用程序不應(yīng)該試圖修改這個結(jié)構(gòu)或者釋放它的任何部分。此外,每一線程僅有一份這個結(jié)構(gòu)的拷貝,所以應(yīng)用程序應(yīng)該在發(fā)出其他</FONT><FONT SIZE=3>Windows Scokets API</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>調(diào)用前,把自己所需的信息拷貝下來。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">返回值:</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY"> </FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>如果沒有錯誤發(fā)生,</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>結(jié)構(gòu)的指針,否則,返回一個空指針。應(yīng)用程序可以通過</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>在應(yīng)用這個</FONT><FONT SIZE=3>API</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>前,必須成功地調(diào)用</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>實現(xiàn)檢測到了網(wǎng)絡(luò)子系統(tǒng)的錯誤。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAHOST_NOT_FOUND </FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>沒有找到授權(quán)應(yīng)答主機。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSATRY_AGAIN </FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>沒有找到非授權(quán)主機,或者</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>無法恢復(fù)的錯誤,</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>有效的名字,但沒有關(guān)于請求類型的數(shù)據(jù)記錄。</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>阻塞調(diào)用被</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>返回對應(yīng)于給定主機名的主機信息。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">	</FONT><FONT SIZE=3>#include <winsock.h></P>
<P ALIGN="JUSTIFY">	</P>
<P ALIGN="JUSTIFY">	struct hostent FAR *PASCAL FAR gethostbyname(const char </P>
<P ALIGN="JUSTIFY">	FAR * addr);</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">	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>返回對應(yīng)于給定主機名的包含主機名字和地址信息的</FONT><FONT SIZE=3>hostent</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>結(jié)構(gòu)指針。結(jié)構(gòu)的聲明與</FONT><FONT SIZE=3>gethostaddr()</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>中一致。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">	返回的指針指向一個由</FONT><FONT SIZE=3>Windows Sockets</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>實現(xiàn)分配的結(jié)構(gòu)。應(yīng)用程序不應(yīng)該試圖修改這個結(jié)構(gòu)或者釋放它的任何部分。此外,每一線程僅有一份這個結(jié)構(gòu)的拷貝,所以應(yīng)用程序應(yīng)該在發(fā)出其他</FONT><FONT SIZE=3>Windows Scokets API</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>調(diào)用前,把自己所需的信息拷貝下來。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">	</FONT><FONT SIZE=3>gethostbyname()</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>實現(xiàn)沒有必要識別傳送給它的</FONT><FONT SIZE=3>IP</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>地址串。對于這樣的請求,應(yīng)該把</FONT><FONT SIZE=3>IP</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>地址串當(dāng)作一個未知主機名同樣處理。如果應(yīng)用程序有</FONT><FONT SIZE=3>IP</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>地址串需要處理,它應(yīng)該使用</FONT><FONT SIZE=3>inet_addr()</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>函數(shù)把地址串轉(zhuǎn)換為</FONT><FONT SIZE=3>IP</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>地址,然后調(diào)用</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>結(jié)構(gòu)。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">返回值:</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY"> </FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>如果沒有錯誤發(fā)生,</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>結(jié)構(gòu)的指針,否則,返回一個空指針。應(yīng)用程序可以通過</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>在應(yīng)用這個</FONT><FONT SIZE=3>API</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>前,必須成功地調(diào)用</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>實現(xiàn)檢測到了網(wǎng)絡(luò)子系統(tǒng)的錯誤。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAHOST_NOT_FOUND </FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>沒有找到授權(quán)應(yīng)答主機。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSATRY_AGAIN </FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>沒有找到非授權(quán)主機,或者</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>無法恢復(fù)的錯誤,</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>有效的名字,但沒有關(guān)于請求類型的數(shù)據(jù)記錄。</P>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -