gpt4 book ai didi

python - 为什么协议(protocol)必须以大端顺序发送到套接字函数而其余参数则不是?

转载 作者:行者123 更新时间:2023-12-03 12:02:55 30 4
gpt4 key购买 nike

我在python中使用socket lib的socket方法,如下所示:

socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)

现在我已经看到了一些使用该方法来过滤以太网数据包的方法,如下所示:
import socket
ETH_P_ALL = 3
s = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(ETH_P_ALL))
s.close()

我想知道文档中的哪个位置说必须在网络字节序(大)中使用 proto 参数。
以及为什么只有 proto 参数而不是其余参数。
为什么不这样:
s = socket.socket(socket.htons(socket.AF_PACKET), socket.htons(socket.SOCK_RAW), socket.htons(ETH_P_ALL))

谢谢。

最佳答案

I want to know where in the documentation it says that the proto parameter must be used in network endiannes ( big )



来自 man 7 packet :

packet_socket = socket(AF_PACKET, int socket_type, int protocol);

... protocol is the IEEE 802.3 protocol number in network byte order. See the include file for a list of allowed protocols. When protocol is set to htons(ETH_P_ALL), then all protocols are received.

关于python - 为什么协议(protocol)必须以大端顺序发送到套接字函数而其余参数则不是?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60685081/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com