Linux程式設計 套接字程式設計 網路資訊服務

2021-07-10 19:40:43 字數 1355 閱讀 2770

對於通用的伺服器與客戶程式,可以通過網路資訊函式決定所使用的位址與埠。

可以將自己的服務新增到/etc/services檔案中的已知服務列表中,並在這個檔案中為這個埠號分配乙個名字。使用者可以使用符號化的服務名而不是埠號的數字。

給定乙個計算機的名字,可以通過呼叫解析位址的主機資料庫函式來確定ip位址,這些函式通過查詢網路配置檔案(例如/etc/hosts)完成服務。

主機資料庫函式如下:

struct hostent *gethostbyaddr(const void *addr,  size_t len,  int type);

struct hostent *gethostbyname(const char *name);

標頭檔案為netdb.h

函式返回結構成員: 

struct hostent;

標頭檔案:netdb.h

struct servent *getservbyname(const char *name,  const char *proto);

struct servent *getservbyport(int port, const char *proto);

proto引數指定用於連線該服務的協議,兩個取值為tcp與udp

struct servent;

#include #include #include #include #include #include int main(int argc, char *argv)

else

hostinfo = gethostbyname(host);

if(!hostinfo)

printf("results for host %s: \n", host);

printf("name: %s\n", hostinfo->h_name);

printf("aliases: ");

names = hostinfo->h_aliases;

while(*names)

printf("\n");

if(hostinfo->h_addrtype != af_inet)

printf("addrs: ");

addrs = hostinfo->h_addr_list;

while(*addrs)

printf("\n");

exit(0);

}

其中列印位址時需要注意網路位元組序轉換為字串的問題,使用inet_ntoa將其進行轉換。

輸入主機名引數為localhost

網路套接字程式設計

1。位元組序 小位元組 低位儲存在低位元組 大位元組 低位儲存在高位元組 簡單程式判斷 int islittle 2.hostent結構 struct hostent define h addr h addr list 0 這裡是這個資料結構的詳細資料 struct hostent h name 位...

網路程式設計套接字

建立 函式原型 int socket int domain int type int protocol 引數說明 domain 協議域,又稱協議族 family 常用的協議族有af inet af inet6 af local 或稱af unix,unix域socket af route等。協議族決...

網路程式設計套接字

本節重點 本節重點需要掌握的是 基本概念 1.認識ip位址 同樣的問題,整個西天取經過程中,直到ip位址 從長安到西天 只知道這個不能完成取經 需要直到從長安的誰那得到的資訊到西天的誰那拿經 唐太宗 如來佛 有了ip位址 長安 西天 和埠號 唐太宗 如來佛 才能完成取經。引出了下面的埠號的概念。2....