| /* |
| * Copyright (c) 2020 Intel Corporation |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| /* TCP Sample for TTCN-3 based Sanity Check */ |
| |
| #include <stdio.h> |
| #include <stdlib.h> |
| #include <errno.h> |
| |
| #include <zephyr/net/socket.h> |
| |
| #include <zephyr/data/json.h> |
| #include <tp.h> |
| |
| #define UDP_PORT 4242 |
| |
| #define perror(fmt, args...) \ |
| do { \ |
| printf("Error: " fmt "(): %s\n" ## args, strerror(errno)); \ |
| exit(errno); \ |
| } while (0) \ |
| |
| /* |
| * This application is used together with the TTCN-3 based sanity check |
| * to validate the functionality of the TCP. |
| * |
| * samples/net/sockets/tcp/README.rst |
| * |
| * Eventually UDP based test protocol might be terminated in the user space |
| * (see udp() below), but at the moment it's just a dummy loop |
| * to keep the sample running in order to execute TTCN-3 TCP sanity check. |
| */ |
| void main(void) |
| { |
| while (true) { |
| k_sleep(K_SECONDS(1)); |
| } |
| } |
| |
| void udp(void) |
| { |
| int fd = socket(AF_INET, SOCK_DGRAM, 0); |
| |
| if (fd < 0) { |
| perror("socket"); |
| } |
| |
| { |
| struct sockaddr_in sin; |
| |
| sin.sin_family = AF_INET; |
| sin.sin_addr.s_addr = htonl(INADDR_ANY); |
| sin.sin_port = htons(UDP_PORT); |
| |
| if (bind(fd, (struct sockaddr *)&sin, sizeof(sin)) < 0) { |
| perror("bind"); |
| } |
| |
| printf("Listening on UDP port %d\n", UDP_PORT); |
| } |
| |
| { |
| #ifndef BUF_SIZE |
| #define BUF_SIZE 4096 |
| #endif |
| char *buf = malloc(BUF_SIZE); |
| |
| if (buf == NULL) { |
| perror("malloc"); |
| } |
| |
| for (;;) { |
| ssize_t len = recv(fd, buf, BUF_SIZE, 0); |
| |
| if (len < 0) { |
| perror("recv"); |
| } |
| |
| printf("Received %ld bytes\n", (long)len); |
| } |
| } |
| } |