我不知道关于getservbyname的正确答案是什么。
句子sp = getservbyname("example", "tcp")
一个。客户端使用它来获取服务的端口。
湾只有在我们有权修改/ etc / services文件时才能使用。
℃。如果我们有权访问/ etc / services,服务器将使用它来获取服务的端口。
d。 a y b是正确的。
非常感谢!
答案 0 :(得分:2)
首次订购的所有可能性都是错误的。这是一个糟糕的考试问题,你可以告诉你的导师我这么说。
(a)是最错误的答案。在给定文本服务名称的情况下,通用TCP客户端可以使用getservbyname
来确定要连接的服务器的端口。但是,它还有其他一些用途,而且它也已经过时了:新程序应该使用getaddrinfo
(同时执行getservbyname
的工作和gethostbyname
&# 39;工作,同时,更灵活)。
(b)完全错误。 getservbyname
可能要求读取 /etc/services
的访问权限,具体取决于Name Service Switch的配置方式;在任何情况下都不需要写访问该文件。 (/etc/services
的内容由IANA service name and port number registry定义,现在应该修改该文件的唯一程序是sysadmin的文本编辑器和OS的包管理器。不记得是否曾经有一个C库接口来更新该文件,但如果它存在,它将比getservbyname
更加过时。)
(c)部分错误;服务器可以合理地使用getservbyname
来查找它应该绑定到的端口,但是,如上所述,它最多需要读取访问权限到/etc/services
这样做。 (说"允许修改"在选项(b)中然后只是"访问"在(c)中是草率的问题写作技术。)
(d)错误,因为(b)错误。