[riot-users] İpv4 udp socket creating problem

Burak Karaduman bburakkaraduman at gmail.com
Thu Jul 18 11:02:16 CEST 2019


You are a time saver for me. Thanks for your answer. It is big help to me.

Martine Lenders <mail at martine-lenders.eu>, 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 <
> 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
>>
> _______________________________________________
> 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/20190718/dcaa8b28/attachment.htm>


More information about the users mailing list