1. 程式人生 > 其它 >linux高效能伺服器程式設計---第五章Linux網路程式設計基礎API (4)

linux高效能伺服器程式設計---第五章Linux網路程式設計基礎API (4)

以下兩個函式通過讀取/etc/services檔案 來獲取服務資訊 以下內容來自維基百科

Service檔案是現代作業系統在etc目錄下的一個配置檔案,記錄網路服務名對應的埠號與協議 其用途如下

  • 通過TCP/IP的API函式(宣告在netdb.h中)直接查到網路服務名與埠號、使用協議的對應關係。如getservbyname("serve","tcp")獲取埠號;getservbyport(htons(port),“tcp”)獲取埠和協議上的服務名
  • 如果使用者在這個檔案中維護所有使用的網路服務名字、埠、協議,那麼可以一目瞭然的獲悉哪些埠號用於哪個服務,哪些埠號是空閒的
#include <netdb.h>
//
根據名稱獲取某個服務的完整資訊 struct servent getservbyname(const char* name, const char* proto); // 根據埠號獲取服務資訊 struct servent getservbyport(int port, const char* proto); struct servent { char* s_name; /* 服務名稱*/ char ** s_aliases; /* 服務的別名列表*/ int s_port; /* 埠號*/ char* s_proto; /* 服務型別, 通常為TCP或UDP*/ }

#include <netdb.h>
//
host 儲存返回的主機名 // serv儲存返回的服務名 int getnameinfo(const struct sockaddr* sockaddr, socklen_t addrlen, char* host, socklen_t hostlen, char* serv socklen_t servlen, int flags);

測試 使用

telnet ip port #來連線伺服器的此埠
netstat -nt | grep port #來檢視此埠的監聽