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 < [email protected]>: > 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 > [email protected] > https://lists.riot-os.org/mailman/listinfo/users >
_______________________________________________ users mailing list [email protected] https://lists.riot-os.org/mailman/listinfo/users
