MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / udp_server_entry

Function udp_server_entry

components/net/utest/tc_lwip.c:589–705  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

587}
588
589static void udp_server_entry(void *parameter)
590{
591#define LWIP_UDP_RECV_BUF 16
592
593 fd_set fdread;
594 struct timeval timeout;
595 rt_bool_t fail_flag = RT_TRUE;
596 char recv_data[LWIP_UDP_RECV_BUF];
597 int sock = -1, bytes_received, ret, port, maxsock;
598 socklen_t client_len, timeout_len;
599 struct sockaddr_in server_addr, client_addr;
600
601 port = RT_UTEST_LWIP_UDP_PORT;
602
603 /* create socket */
604 if ((sock = lwip_socket(AF_INET, SOCK_DGRAM, 0)) == -1)
605 {
606 uassert_true(RT_FALSE);
607 goto __exit;
608 }
609 else
610 {
611 uassert_true(RT_TRUE);
612 }
613
614 /* set timeout */
615 timeout_len = sizeof(timeout);
616 timeout.tv_sec = 5;
617 timeout.tv_usec = 0;
618 ret = lwip_setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, (void *) &timeout, timeout_len);
619 uassert_true(ret == 0);
620
621 server_addr.sin_family = AF_INET;
622 server_addr.sin_port = htons(port);
623 /* server addr:0.0.0.0 for UDP to work with external IP */
624 server_addr.sin_addr.s_addr = htonl(IPADDR_ANY);
625 rt_memset(&(server_addr.sin_zero), 0, sizeof(server_addr.sin_zero));
626
627 /* bind socket */
628 if (lwip_bind(sock, (struct sockaddr *)&server_addr, sizeof(struct sockaddr)) == -1)
629 {
630 rt_kprintf("UDP server bind failed\n");
631 uassert_true(RT_FALSE);
632 goto __exit;
633 }
634 else
635 {
636 rt_kprintf("UDP server bound to 0.0.0.0:%d\n", port);
637 uassert_true(RT_TRUE);
638 }
639
640 maxsock = sock;
641 FD_ZERO(&fdread);
642 FD_SET(sock, &fdread);
643 /* wait for recv data */
644 ret = lwip_select(maxsock + 1, &fdread, NULL, NULL, &timeout);
645 if (ret <= 0)
646 {

Callers

nothing calls this directly

Calls 11

rt_memsetFunction · 0.85
rt_kprintfFunction · 0.85
rt_get_errnoFunction · 0.85
rt_event_sendFunction · 0.85
lwip_socketFunction · 0.50
lwip_setsockoptFunction · 0.50
lwip_bindFunction · 0.50
lwip_selectFunction · 0.50
lwip_recvfromFunction · 0.50
lwip_sendtoFunction · 0.50
lwip_closeFunction · 0.50

Tested by

no test coverage detected