如何使用Python将协议号转换为名称?

2024-10-08 22:27:50 发布

您现在位置:Python中文网/ 问答频道 /正文

像tcp和udp这样的协议都是用数字表示的。在

import socket
socket.getprotocobyname('tcp') 

上面的代码将返回6。在

如果我知道协议号,怎么能得到协议名?在


Tags: 代码import协议数字sockettcpudpgetprotocobyname
2条回答

我要说的是,几乎肯定有比这更好的方法,但是所有协议名称(和值)都存储为前缀为"IPPROTO"的常量,因此您可以通过迭代模块中的值来创建查找表:

import socket

table = {num:name[8:] for name,num in vars(socket).items() if name.startswith("IPPROTO")}

>>> table[6]
'TCP'

Python的socket模块将执行此操作:

import socket
socket.getservbyport(80)

结果

^{pr2}$

socket.getservbyname(servicename[, protocolname])和socket.getservbyport(port[, protocolname])的文档所述。第二个可选协议名(如果给定)应为“tcp”或“udp”,否则任何协议都将匹配。在

相关问题 更多 >

    热门问题