tcp、udp等协议都是用数字来表示的。
import socket
socket.getprotocobyname('tcp')
上面的代码将返回 6。
如果我知道协议号,如何获取协议名称?
我想说几乎肯定有比这更好的方法,但是所有协议名称(和值)都存储为前缀为的常量"IPPROTO_"
因此您可以通过迭代模块中的值来创建查找表:
import socket
prefix = "IPPROTO_"
table = {num:name[len(prefix):]
for name,num in vars(socket).items()
if name.startswith(prefix)}
assert table[6] == 'TCP'
assert table[0x11] == 'UDP'
print(len(table)) # in python 3.10.0 this has 30 entries
from pprint import pprint
pprint(table) # if you want to see what is available to you
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)