FreeRTOS_htons()、
FreeRTOS_ntohs()、
FreeRTOS_htonl() &
FreeRTOS_ntohl()
[FreeRTOS-Plus-TCP API 引用]
FreeRTOS_sockets.h
uint16_t FreeRTOS_htons( uint16_t usValueToSwap );
uint16_t FreeRTOS_ntohs( uint16_t usValueToSwap );
uint32_t FreeRTOS_htonl( uint32_t ulValueToSwap );
uint32_t FreeRTOS_ntohl( uint32_t ulValueToSwap );
嵌入式网络基础和术语表页面的字节顺序和 Endian
部分解释了
IP 网络中字节顺序的考量。
FreeRTOSIPConfig.h 中 ipconfigBYTE_ORDER 的定义
对于运行 FreeRTOS-Plus-TCP 的微控制器而言必须正确无误。 如果
微控制器采用大端序,则 ipconfigBYTE_ORDER 必须设置为
pdFREERTOS_BIG_ENDIAN。 如果微控制器采用 小端序,
则 ipconfigBYTE_ORDER 必须设置为 pdFREERTOS_LITTLE_ENDIAN。
ipconfigBYTE_ORDER 设置为 pdFREERTOS_LITTLE_ENDIAN 时:
-
FreeRTOS_htons 和 FreeRTOS_ntohs() 返回
16 位参数的值,其中高、低字节互换。 例如,
如果 usValueToSwap 参数为 0x1122 ,则两个宏
都返回 0x2211。
-
FreeRTOS_htonl 和 FreeRTOS_ntohl() 返回
32 位参数的值,字节顺序颠倒。 例如,
如果 ulValueToSwap 参数为 0x11223344 ,则两个宏
都返回 0x44332211。
如果微控制器采用大端序(因此 ipconfigBYTE_ORDER
设置为 pdFREERTOS_BIG_ENDIAN),则微控制器的字节顺序
和网络的字节顺序已经匹配,所有四个字节交换宏
都被定义为无效。
字节交换宏主要用于指定组成套接字地址的
IP 地址和端口号。
用法示例:
FreeRTOS_socket()、
FreeRTOS_inet_addr()
FreeRTOS_sendto() 文档页面上的示例演示了
FreeRTOS_htons() 的用法。
FreeRTOS_recvfrom() 文档页面上的示例
演示了 FreeRTOS_ntohs() 的用法。
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.