用于查询时间的
FreeRTOS_recvfrom()
TCP/IP 堆栈 API 函数用于从
UDP 套接字接收数据。
只有在
套接字被
创建、配置并
绑定本地
端口号后,才能接收数据。
正如 FreeRTOS_recvfrom() API 引用页面所述,FreeRTOS_recvfrom()
可以与标准调用语义或零拷贝调用语义一起使用。
本页演示的是零拷贝调用语义。
下方源代码所述的 RTOS 任务在进入
使用零拷贝调用语义接收数据的循环前创建了套接字。 源代码中的
注释提供了采用零拷贝方案时如何使用
网络缓冲区的重要信息。
static void vUDPReceivingUsingZeroCopyInterface( void *pvParameters )
{
int32_t lBytes;
uint8_t *pucUDPPayloadBuffer;
struct freertos_sockaddr xClient, xBindAddress;
uint32_t xClientLength = sizeof( xClient ), ulIPAddress;
Socket_t xListeningSocket;
xListeningSocket = FreeRTOS_socket( FREERTOS_AF_INET,
FREERTOS_SOCK_DGRAM,
FREERTOS_IPPROTO_UDP );
configASSERT( xListeningSocket != FREERTOS_INVALID_SOCKET );
xBindAddress.sin_port = FreeRTOS_htons( 10000 );
FreeRTOS_bind( xListeningSocket, &xBindAddress, sizeof( xBindAddress ) );
for( ;; )
{
lBytes = FreeRTOS_recvfrom( xListeningSocket,
&pucUDPPayloadBuffer,
0,
FREERTOS_ZERO_COPY,
&xClient,
&xClientLength );
if( lBytes > 0 )
{
}
if( lBytes >= 0 )
{
FreeRTOS_ReleaseUDPPayloadBuffer( pucUDPPayloadBuffer );
}
}
}
使用 FreeRTOS_recvfrom() 与零拷贝(和标准相反)调用语义的示例
<<
返回 RTOS TCP 网络教程索引
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.