我从python码头学习了套接字编程,并达到了以下目的:
socket.ntohl(x)将32位正整数从网络转换为主机字节顺序.在主机字节顺序与网络字节顺序相同的机器上,这是不操作的;否则,它执行4字节交换操作。
socket.ntohs(x)将16位正整数从网络转换为主机字节顺序.在主机字节顺序与网络字节顺序相同的机器上,这是不操作的;否则,它执行2字节交换操作。
在版本3.10中更改:如果x不适合16位无符号整数,则引发OverflowError。
socket.htonl(x)将32位正整数从主机转换为网络字节顺序.在主机字节顺序与网络字节顺序相同的机器上,这是不操作的;否则,它执行4字节交换操作。
socket.htons(x)将16位正整数从主机转换为网络字节顺序.在主机字节顺序与网络字节顺序相同的机器上,这是不操作的;否则,它执行2字节交换操作。
因此,对于这些函数,我所能做的就是在圆括号中放一些整数,然后得到结果:
import socket
a=socket.ntohs(32) #example number
print(a)
result : 8192
你能给出一些有意义的例子吗?
发布于 2022-03-31 16:47:23
这是一个关于哪些机器使用大端对小端点的问题。
我不是IBM大型机的用户,但似乎:他们使用的是大终端( https://www.ibm.com/docs/en/zos/2.4.0?topic=hosts-network-byte-order )。然而,IBM只使用少量的endian。
TCP/IP标准的网络字节顺序是大端的,因此它取决于应用程序代码运行的机器,以及它是小的还是大的。如果您的网络与硬件字节顺序不匹配,则需要使用您所指示的函数。
这是一个例子。
发布于 2022-03-31 16:55:41
Python的int
与其运行的处理器具有相同的特性。
在计算机网络中,在发送和接收数据包时,采用大端排序。
因此,您必须在向网络发送数据之前以及根据python解释器正在运行的体系结构从网络接收数据之后进行转换。
https://stackoverflow.com/questions/71695996
复制相似问题