import socket
socket.getprotocobyname('tcp')
上面的代码将返回6.
如果我知道协议号码,如何获取协议名称?
答案 0 :(得分:6)
我要说几乎肯定有更好的方法,但是所有协议名称(和值)都存储为前缀为"IPPROTO"
的常量,因此您可以通过迭代来创建查找表模块中的值:
import socket
table = {num:name[8:] for name,num in vars(socket).items() if name.startswith("IPPROTO")}
>>> table[6]
'TCP'
答案 1 :(得分:1)
Python的socket模块将执行此操作:
import socket
socket.getservbyport(80)
结果
>>> import socket
>>> socket.getservbyport(6)
'zip'
>>> socket.getservbyport(80)
'http'
正如socket.getservbyname(servicename[, protocolname]
)和socket.getservbyport(port[, protocolname])
所述的文档。第二个可选的协议名称,如果给出,应为'tcp'或'udp',否则任何协议都将匹配。