getservbyname、getservbyport
????名字和端口號的映射存放在/etc/services配置文件中,那么之后,盡管端口號發生改變,我們僅僅需要修改/etc/services配置文件中某個服務對應的端口號即可(不需要重新編譯程序)。
使用 服務名+協議名 或 端口號+協議名 得到 struct servent 結構體(某個服務的詳細信息),先介紹該結構體:
先介紹 struct servent 結構體
struct servent{char* s_name; 服務名char** s_aliases; 別名列表int s_port; 端口號(網絡字節序)char* s_proto; 使用的協議 }① getservbyname:使用 servname+protoname ,得到 struct servent
struct servent* getservbyname(const char* servname, const char* protoname);參數:servname服務名; protoname協議,有TCP、UDP等。
返回值:若成功,返回非空指針;失敗,返回NULL
??????struct servent* sptr = getservbyname(“domain”, “udp”);
??????struct servent* sptr = getservbyname(“FTP”, NULL);
② getservbyport:使用 端口號+protoname ,得到 struct servent
struct servent* getservbyport(int port, const char* protoname);參數:port必須是網絡字節序
??????struct servent* sptr = getservbyport(htons(53), “udp”);
??????struct servent* sptr = getservbyport(htons(21), “tcp”);
總結
以上是生活随笔為你收集整理的getservbyname、getservbyport的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 锋云数据服务器管理文件说明书,云端数据库
- 下一篇: ue4蓝图碰撞检测的类型_UE4碰撞规则