bump up. :)
Burak Karaduman <[email protected]>, 3 Ağu 2019 Cmt, 22:58
tarihinde şunu yazdı:
> Dear All,
>
> I run a TCP server on esp32. I use a packet sender program to test whether
> ESP32 receives multiple messages using TCP connection, I use official TCP
> Sock example in offfical docs of RIOT OS. I use lwIP stack to establish TCP.
>
> The code and makefile are as follows, i tried several ways to recive
> multiple messages. However then a message receives after that " Error
> accepting new sock " is given. ;
>
> Thanks for your help.
>
>
> #include <stdbool.h>
> #include <stdint.h>
> #include <stdio.h>
> #include "thread.h"
> #include "xtimer.h"
> #include "od.h"
> #include "net/af.h"
> #include "net/sock/tcp.h"
> #include "net/ipv6.h"
> #include "shell.h"
> #include "net/af.h"
> #include "net/sock/tcp.h"
> #include "lwip/netif.h"
> #define SOCK_QUEUE_LEN (1U)
> sock_tcp_t sock_queue;
> uint8_t buf[128];
>
> /* import "ifconfig" shell command, used for printing addresses */
> //extern int _gnrc_netif_config(int argc, char **argv);
>
>
> static int print_ip(void)
> {
>
> for (struct netif *iface = netif_list; iface != NULL; iface =
> iface->next) {
> printf("%s_%02u: ", iface->name, iface->num);
>
> char addrstr[IPV6_ADDR_MAX_STR_LEN];
> for (int i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
> if (!ipv6_addr_is_unspecified((ipv6_addr_t
> *)&iface->ip6_addr[i])) {
> printf(" inet6 %s\n", ipv6_addr_to_str(addrstr,
> (ipv6_addr_t *)&iface->ip6_addr[i],
> sizeof(addrstr)));
> }
> }
>
> puts("");
> }
> return 0;
> }
>
>
>
>
>
>
> int main(void)
> {
> print_ip();
> sock_tcp_ep_t local = SOCK_IPV6_EP_ANY;
> sock_tcp_queue_t queue;
> local.port = 12345;
> if (sock_tcp_listen(&queue, &local, &sock_queue, 1,
> SOCK_FLAGS_REUSE_EP) < 0) {
> puts("Error creating listening queue");
> return 1;
> }
> puts("Listening on port 12345");
> /*
>
> puts("Configured network interfaces2:");
> _gnrc_netif_config(0, NULL);
>
> */
> while (1) {
> // puts("Configured network interfaces:");
> // _gnrc_netif_config(0, NULL);
> sock_tcp_t *sock;
> if (sock_tcp_accept(&queue, &sock, SOCK_NO_TIMEOUT) < 0) {
> puts("Error accepting new sock");
> }
> else {
> int read_res = 0;
> puts("Reading data");
> while (read_res >= 0) {
> read_res = sock_tcp_read(sock, &buf, sizeof(buf),
> SOCK_NO_TIMEOUT);
> if (read_res < 0) {
> puts("Disconnected");
> break;
> }
> else {
> int write_res;
> printf("Read: \"");
> for (int i = 0; i < read_res; i++) {
> printf("%c", buf[i]);
> }
> puts("\"");
> if ((write_res = sock_tcp_write(sock, &buf,
> read_res)) < 0) {
> puts("Errored on write, finished server loop");
> break;
> }
> }
> }
> sock_tcp_disconnect(sock);
> }
> }
> sock_tcp_stop_listen(&queue);
> return 0;
> }
> ---------------------------------------------------- Makefile
> ---------------------------------------------------------
> # name of your application
> APPLICATION = tcp-simple-server
> # If no BOARD is found in the environment, use this default:
> BOARD ?= esp32-wroom-32
>
> # This has to be the absolute path to the RIOT base directory:
> RIOTBASE ?= $(CURDIR)/../..
>
> BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-leonardo \
> arduino-mega2560 arduino-nano \
> arduino-uno blackpill bluepill calliope-mini \
> chronos hifive1 i-nucleo-lrwan1 mega-xplained
> \
> microbit msb-430 msb-430h \
> nucleo-f031k6 nucleo-f042k6 nucleo-f303k8 \
> nucleo-l031k6 nucleo-f030r8 nucleo-f070rb \
> nucleo-f072rb nucleo-f103rb nucleo-f302r8 \
> nucleo-f334r8 nucleo-l053r8 saml10-xpro \
> saml11-xpro spark-core stm32f0discovery \
> stm32l0538-disco telosb \
> waspmote-pro wsn430-v1_3b wsn430-v1_4 z1
>
>
>
> # module as used in tests/lwip
> USEMODULE += lwip lwip_ipv6_autoconfig lwip_sock_ip lwip_netdev
> USEMODULE += lwip_tcp lwip_sock_tcp
> USEMODULE += ipv6_addr
> USEMODULE += shell
> USEMODULE += shell_commands
> USEMODULE += ps
> USEMODULE += od
> USEMODULE += netdev_default
>
> # additional modules for the application
> USEMODULE += netstats_l2
> USEMODULE += netstats_ipv6
> USEMODULE += netstats_rpl
> USEMODULE += esp_wifi
>
>
> include $(RIOTBASE)/Makefile.include
>
>
>
>
>
_______________________________________________
users mailing list
[email protected]
https://lists.riot-os.org/mailman/listinfo/users