summaryrefslogtreecommitdiff
path: root/examples/network/udpserver.c
diff options
context:
space:
mode:
Diffstat (limited to 'examples/network/udpserver.c')
-rw-r--r--examples/network/udpserver.c30
1 files changed, 20 insertions, 10 deletions
diff --git a/examples/network/udpserver.c b/examples/network/udpserver.c
index a33a27da10..33442a72ed 100644
--- a/examples/network/udpserver.c
+++ b/examples/network/udpserver.c
@@ -1,10 +1,11 @@
/*
- * Copyright (c) 2006-2021, RT-Thread Development Team
+ * Copyright (c) 2006-2022, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
+ * 2022-01-24 ChungHsuan improve code comments
*/
#include <rtthread.h>
@@ -16,7 +17,7 @@
#include <sys/time.h>
#include <sys/select.h>
#endif
-#include <sys/socket.h> /* 使用BSD socket,需要包含socket.h头文件 */
+#include <sys/socket.h> /* socket.h header file is needed when using BSD socket */ /* 使用BSD socket,需要包含socket.h头文件 */
#include "netdb.h"
#define DEBUG_UDP_SERVER
@@ -35,6 +36,9 @@ static int started = 0;
static int is_running = 0;
static int port = 5000;
+/**
+* @brief This function is for creating a udp server on RT-Thread
+*/
static void udpserv(void *paramemter)
{
int sock;
@@ -45,7 +49,7 @@ static void udpserv(void *paramemter)
struct timeval timeout;
fd_set readset;
-
+ /* Allocate space for recv_data */
/* 分配接收用的数据缓冲 */
recv_data = rt_malloc(BUFSZ);
if (recv_data == RT_NULL)
@@ -53,20 +57,20 @@ static void udpserv(void *paramemter)
LOG_E("No memory");
return;
}
-
+ /* Create a socket and set it to SOCK_DGRAM(UDP) */
/* 创建一个socket,类型是SOCK_DGRAM,UDP类型 */
if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) == -1)
{
LOG_E("Create socket error");
goto __exit;
}
-
+ /* Initialize server side address */
/* 初始化服务端地址 */
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(port);
server_addr.sin_addr.s_addr = INADDR_ANY;
rt_memset(&(server_addr.sin_zero), 0, sizeof(server_addr.sin_zero));
-
+ /* Bind socket to server side address */
/* 绑定socket到服务端地址 */
if (bind(sock, (struct sockaddr *)&server_addr,
sizeof(struct sockaddr)) == -1)
@@ -92,7 +96,7 @@ static void udpserv(void *paramemter)
/* Wait for read or write */
if (select(sock + 1, &readset, RT_NULL, RT_NULL, &timeout) == 0)
continue;
-
+ /* The maximum size received from sock is BUFSZ-1 bytes*/
/* 从sock中收取最大BUFSZ - 1字节数据 */
bytes_read = recvfrom(sock, recv_data, BUFSZ - 1, 0,
(struct sockaddr *)&client_addr, &addr_len);
@@ -108,11 +112,11 @@ static void udpserv(void *paramemter)
}
else
{
- recv_data[bytes_read] = '\0'; /* 把末端清零 */
-
+ recv_data[bytes_read] = '\0'; /* Append '\0' at the end of message *//* 把末端清零 */
+ /* Output received message */
/* 输出接收的数据 */
LOG_D("Received data = %s", recv_data);
-
+ /* If the message received is 'exit', quit. */
/* 如果接收数据是exit,退出 */
if (strcmp(recv_data, "exit") == 0)
{
@@ -136,6 +140,9 @@ __exit:
is_running = 0;
}
+/**
+* @brief The usage description of udp server on rt-Thread
+*/
static void usage(void)
{
rt_kprintf("Usage: udpserver -p <port>\n");
@@ -148,6 +155,9 @@ static void usage(void)
rt_kprintf(" --help Print help information\n");
}
+/**
+* @brief This function is for testing udp server on rt-Thread
+*/
static void udpserver_test(int argc, char** argv)
{
rt_thread_t tid;