[riot-users] İpv4 udp socket creating problem

Martine Lenders mail at martine-lenders.eu
Sun Jul 14 14:26:13 CEST 2019


Hi,

GNRC does not support IPv4. Check out lwIP [1] as an alternative that
supports that protocol.

Best regards,
Martine

[1] https://github.com/RIOT-OS/RIOT/tree/master/tests/lwip

Am So., 14. Juli 2019 um 13:19 Uhr schrieb Burak Karaduman <
bburakkaraduman at gmail.com>:

> I have adapted udp sock example in docs to ipv4 version.
>
> However i am getting " Error creating UDP sock "  problem. I could not
> figure it out why.
>
> This is the cliend side code. In docs example i have successfuly run it in
> ipv6 and in java i received messages at server side.
>
> Hardware: Board=esp8266-esp-12x
>
> Thanks for your help
>
>
> ----------------------------------------------------------------------------------------------------
> #include <stdio.h>
> #include "net/af.h"
> #include "net/protnum.h"
> #include "net/ipv6/addr.h"
> #include "net/ipv4/addr.h"
> #include "net/sock/udp.h"
> #include "xtimer.h"
>
> uint8_t buf[7];
> int main(void)
> {
>     sock_udp_ep_t local = SOCK_IPV4_EP_ANY;
>     sock_udp_t sock;
>     local.port = 12346;
>     if (sock_udp_create(&sock, &local, NULL, 0) < 0) {
>         puts("Error creating UDP sock");
>         return 1;
>     }
>     while (1) {
>         sock_udp_ep_t remote = { .family = AF_INET };
>         ssize_t res;
>         remote.port = 12345;
>         //ipv6_addr_set_all_nodes_multicast((ipv6_addr_t
> *)&remote.addr.ipv6,
>         //
>  IPV6_ADDR_MCAST_SCP_LINK_LOCAL);
>
> ipv4_addr_from_str((ipv4_addr_t *)&remote.addr.ipv4,"255.255.255.0");
>
> if (sock_udp_send(&sock, "Hello!", sizeof("Hello!"), &remote) < 0) {
>             puts("Error sending message");
>             sock_udp_close(&sock);
>             return 1;
>         }
>         if ((res = sock_udp_recv(&sock, buf, sizeof(buf), 1 * US_PER_SEC,
>                                 NULL)) < 0) {
>             if (res == -ETIMEDOUT) {
>                 puts("Timed out");
>             }
>             else {
>                 puts("Error receiving message");
>             }
>         }
>         else {
>             printf("Received message: \"");
>             for (int i = 0; i < res; i++) {
>                 printf("%c", buf[i]);
>             }
>             printf("\"\n");
>         }
>         xtimer_sleep(1);
>     }
>     return 0;
> }
>
>
> ------------------------------------------------------------------------------------------------------
>
> # name of your application
> APPLICATION = udp-simple-client
> # If no BOARD is found in the environment, use this default:
> BOARD ?= esp8266-esp-12x
>
> # 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
>
> # Include packages that pull up and auto-init the link layer.
> # NOTE: 6LoWPAN will be included if IEEE802.15.4 devices are present
> USEMODULE += gnrc_netdev_default
> USEMODULE += auto_init_gnrc_netif
> # Activate ICMPv6 error messages
> USEMODULE += gnrc_icmpv6_error
> # Specify the mandatory networking modules for IPv6 and UDP
> USEMODULE += gnrc_ipv6_router_default
> USEMODULE += gnrc_udp
> USEMODULE += gnrc_sock_check_reuse # gnrc_udp, gnrc_sock_udp , gnrc_ipv6
> eklenmeli
> USEMODULE += gnrc_sock_udp
> USEMODULE += gnrc_ipv6
>
> USEMODULE += ipv4_addr  #ipv4 icin bu gerekli
> # Add a routing protocol
> USEMODULE += gnrc_rpl
> USEMODULE += auto_init_gnrc_rpl
> # This application dumps received packets to STDIO using the pktdump module
> USEMODULE += gnrc_pktdump
> # Additional networking modules that can be dropped if not needed
> USEMODULE += gnrc_icmpv6_echo
> # Add also the shell, some shell commands
> USEMODULE += shell
> USEMODULE += shell_commands
> USEMODULE += ps
> USEMODULE += netstats_l2
> USEMODULE += netstats_ipv6
> USEMODULE += netstats_rpl
>
> # Comment this out to disable code in RIOT that does safety checking
> # which is not needed in a production environment but helps in the
> # development process:
> DEVELHELP ?= 1
>
> # Uncomment the following 2 lines to specify static link lokal IPv6 address
> # this might be useful for testing, in cases where you cannot or do not
> want to
> # run a shell with ifconfig to get the real link lokal address.
> #IPV6_STATIC_LLADDR ?= '"fe80::cafe:cafe:cafe:1"'
> #CFLAGS += -DGNRC_IPV6_STATIC_LLADDR=$(IPV6_STATIC_LLADDR)
>
> # Uncomment this to join RPL DODAGs even if DIOs do not contain
> # DODAG Configuration Options (see the doc for more info)
> # CFLAGS += -DGNRC_RPL_DODAG_CONF_OPTIONAL_ON_JOIN
>
> # Change this to 0 show compiler invocation lines by default:
> QUIET ?= 1
>
> include $(RIOTBASE)/Makefile.include
>
> # Set a custom channel if needed
> ifneq (,$(filter cc110x,$(USEMODULE)))          # radio is cc110x sub-GHz
>   DEFAULT_CHANNEL ?= 0
>   CFLAGS += -DCC110X_DEFAULT_CHANNEL=$(DEFAULT_CHANNEL)
> else
>   ifneq (,$(filter at86rf212b,$(USEMODULE)))    # radio is IEEE 802.15.4
> sub-GHz
>     DEFAULT_CHANNEL ?= 5
>     CFLAGS += -DIEEE802154_DEFAULT_SUBGHZ_CHANNEL=$(DEFAULT_CHANNEL)
>   else                                          # radio is IEEE 802.15.4
> 2.4 GHz
>     DEFAULT_CHANNEL ?= 26
>     CFLAGS += -DIEEE802154_DEFAULT_CHANNEL=$(DEFAULT_CHANNEL)
>   endif
> endif
> _______________________________________________
> users mailing list
> users at riot-os.org
> https://lists.riot-os.org/mailman/listinfo/users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.riot-os.org/pipermail/users/attachments/20190714/20e920c9/attachment-0001.html>


More information about the users mailing list