下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

最新资讯
简化任何设备的身份验证云连接。
利用 CoAP 设计节能型云连接 IoT 解决方案。
11.0.0 版 FreeRTOS 内核简介:
FreeRTOS 路线图和代码贡献流程。
使用 FreeRTOS 实现 OPC-UA over TSN。

发送 UDP 数据(标准接口)
FreeRTOS-Plus-TCP 网络教程节选

经证明, FreeRTOS_sendto() TCP/IP 堆栈 API 函数用于向 UDP 套接字发送数据。 只有在 套接字已被 创建、配置并 选择性绑定到本地端口号后,才能发送数据。

正如 FreeRTOS_sendto()() API 引用页面所述,FreeRTOS_sendto() 可以与标准调用语义或零拷贝调用语义一起使用。 本页演示的是标准调用语义。

下述源代码展示的是 RTOS 任务,该任务在进入循环之前创建了 UDP 套接字, 该循环每秒(1000 毫秒)向套接字发送一个字符串 (使用标准调用语义)。 如需了解更多信息,请参阅源代码示例中的注释 。


static void vUDPSendUsingStandardInterface( void *pvParameters )
{
Socket_t xSocket;
struct freertos_sockaddr xDestinationAddress;
uint8_t cString[ 50 ];
uint32_t ulCount = 0UL;
const TickType_t x1000ms = 1000UL / portTICK_PERIOD_MS;

/* Send strings to port 10000 on IP address 192.168.0.50. */
xDestinationAddress.sin_addr = FreeRTOS_inet_addr( "192.168.0.50" );
xDestinationAddress.sin_port = FreeRTOS_htons( 10000 );

/* Create the socket. */
xSocket = FreeRTOS_socket( FREERTOS_AF_INET4, /* Used for IPv4 UDP socket. */

/* FREERTOS_AF_INET6 can be used for IPv6 UDP socket. */

FREERTOS_SOCK_DGRAM, /*FREERTOS_SOCK_DGRAM for UDP.*/
FREERTOS_IPPROTO_UDP );

/* Check the socket was created. */
configASSERT( xSocket != FREERTOS_INVALID_SOCKET );

/* NOTE: FreeRTOS_bind() is not called. This will only work if
ipconfigALLOW_SOCKET_SEND_WITHOUT_BIND is set to 1 in FreeRTOSIPConfig.h. */


for( ;; )
{
/* Create the string that is sent. */
sprintf( cString,
"Standard send message number %lurn",
ulCount );

/* Send the string to the UDP socket. ulFlags is set to 0, so the standard
semantics are used. That means the data from cString[] is copied
into a network buffer inside FreeRTOS_sendto(), and cString[] can be
reused as soon as FreeRTOS_sendto() has returned. */

FreeRTOS_sendto( xSocket,
cString,
strlen( cString ),
0,
&xDestinationAddress,
sizeof( xDestinationAddress ) );

ulCount++;

/* Wait until it is time to send again. */
vTaskDelay( x1000ms );
}
}

Example using FreeRTOS_sendto() with the standard (as opposed to zero copy) calling semantics



<< 返回 RTOS TCP 网络教程索引

Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.