2024-10-08 22:27:50 发布
网友
像tcp和udp这样的协议都是用数字表示的。在
import socket socket.getprotocobyname('tcp')
上面的代码将返回6。在
如果我知道协议号,怎么能得到协议名?在
我要说的是,几乎肯定有比这更好的方法,但是所有协议名称(和值)都存储为前缀为"IPPROTO"的常量,因此您可以通过迭代模块中的值来创建查找表:
"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)
结果
如socket.getservbyname(servicename[, protocolname])和socket.getservbyport(port[, protocolname])的文档所述。第二个可选协议名(如果给定)应为“tcp”或“udp”,否则任何协议都将匹配。在
socket.getservbyname(servicename[, protocolname]
socket.getservbyport(port[, protocolname])
我要说的是,几乎肯定有比这更好的方法,但是所有协议名称(和值)都存储为前缀为
"IPPROTO"
的常量,因此您可以通过迭代模块中的值来创建查找表:Python的socket模块将执行此操作:
结果
^{pr2}$如
socket.getservbyname(servicename[, protocolname]
)和socket.getservbyport(port[, protocolname])
的文档所述。第二个可选协议名(如果给定)应为“tcp”或“udp”,否则任何协议都将匹配。在相关问题 更多 >
编程相关推荐