You are a time saver for me. Thanks for your answer. It is big help to me. Martine Lenders <[email protected]>, 14 Tem 2019 Paz, 15:27 tarihinde şunu yazdı:
> 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 >
_______________________________________________ users mailing list [email protected] https://lists.riot-os.org/mailman/listinfo/users
