getprotobyname()

getprotobyname()是一個函式,返回對應於給定協定名的相關協定信息。

基本介紹

  • 外文名:getprotobyname
  • 性質:一個函式
  • name:一個指向協定名的指針
  • p_name:正規的協定名。
  • 返回值:struct protoent 結構體指針
  • 頭檔案:#include
簡述,注釋,錯誤代碼,

簡述

返回對應於給定協定名的相關協定信息。
#include <winsock.h>
struct protoent FAR * PASCAL FAR getprotobyname(const char
FAR * name);
name:一個指向協定名的指針。

注釋

getprotobyname()返回對應於給定協定名的包含名字和協定號的protoent結構指針。結構的聲明如下:
struct protoent {
char FAR * p_name;
char Far * far * p_aliases;
short p_proto;
};
結構的成員有:
成員 用途
p_name 正規的協定名。
p_aliases 一個以空指針結尾的可選協定名佇列。
p_proto 以主機位元組順序排列的協定號
返回的指針指向一個由Windows Sockets實現分配的結構。應用程式不應該試圖修改這個結構或者釋放它的任何部分。此外,每一執行緒僅有一份這個結構的拷貝,所以應用程式應該在發出其他Windows Scokets API調用前,把自己所需的信息拷貝下來。
返回值:
如果沒有錯誤發生,getprotobyname()返回如上所述的一個指向protoent結構的指針,否則,返回一個空指針。應用程式可以通過WSAGetLastError()來得到一個特定的錯誤代碼。

錯誤代碼

WSANOTINITIALISED 在套用這個API前,必須成功地調用WSAStartup()。
WSAENETDOWN Windows Sockets實現檢測到了網路子系統的錯誤。
WSANO_RECOVERY 無法恢復的錯誤,FORMERR,REFUSED,NOTIMP。
WSANO_DATA 有效的名字,但沒有關於請求類型的數據記錄。
WSAEINPROGRESS 一個阻塞的Windows Sockets操作正在進行。
WSAEINTR 阻塞調用被WSACancelBlockingCall()取消了.
c語言示例:
#include <stdio.h>
#include <netdb.h>
int main()
{    
    struct  protoent  *protocol;    
    if(NULL == (protocol = getprotobyname("tcp")))
    {       
        printf("Fail to getprotobyname\n");    
    }    
    printf("Protocol num is %d\n",protocol->p_proto);
    return 0;
}

相關詞條

熱門詞條

聯絡我們