<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>UDP questions</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/63084/udp-questions</link><description>Hello, 
 I work on nbiot evaluation and i try to send udp data from my basement.. I boot and attach network from ground-floor and when i&amp;#39;m on PSM mode im going on basement. 
 I wonder when i wake up from to PSM mode to send my udp data if my nbiot module</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Tue, 21 Jul 2020 12:44:43 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/63084/udp-questions" /><item><title>RE: UDP questions</title><link>https://devzone.nordicsemi.com/thread/260996?ContentTypeID=1</link><pubDate>Tue, 21 Jul 2020 12:44:43 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:748be893-8400-4a85-b223-34c7121d07f0</guid><dc:creator>Hakon</dc:creator><description>&lt;p&gt;Did you try running the udp_with_psm sample I showed you earlier? Also, where is the UDP server located? Are you hosting it on the nrf9160? Could you provide some context for what you are trying to do?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: UDP questions</title><link>https://devzone.nordicsemi.com/thread/260046?ContentTypeID=1</link><pubDate>Wed, 15 Jul 2020 07:25:24 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:217ac3e6-da6d-4245-8717-e751e20c4d03</guid><dc:creator>Maxvi33</dc:creator><description>&lt;p&gt;Do you have an idea ?&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: UDP questions</title><link>https://devzone.nordicsemi.com/thread/258745?ContentTypeID=1</link><pubDate>Tue, 07 Jul 2020 08:28:07 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c153e4fb-117c-418f-ac28-6d307db62968</guid><dc:creator>Maxvi33</dc:creator><description>&lt;p&gt;Hello,&lt;br /&gt;&lt;br /&gt;I use this FW to try to send udp trame from my basement but i have a bit modified for receive on my own serveur and see differently configuration like XRAI = 4 &amp;amp; CSCON &lt;span class="emoticon" data-url="https://devzone.nordicsemi.com/cfs-file/__key/system/emoji/1f642.svg" title="Slight smile"&gt;&amp;#x1f642;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;/*
 * Copyright (c) 2018 Nordic Semiconductor ASA
 *
 * SPDX-License-Identifier: LicenseRef-BSD-5-Clause-Nordic
 */

#include &amp;lt;lte_lc.h&amp;gt;
#include &amp;lt;net/socket.h&amp;gt;
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;string.h&amp;gt;
#include &amp;lt;uart.h&amp;gt;
#include &amp;lt;zephyr.h&amp;gt;

#define NTP_HOST &amp;quot;server url :)&amp;quot;
#define NTP_PORT 41234
#define RECV_BUF_SIZE 1024
#define SEND_BUF_SIZE 1024

/* Chapter 3: https://www.eecis.udel.edu/~mills/y2k.html 
 * Need to convert from 1900 -&amp;gt; 1970
 */
#define NTP_TO_UNIX_OFFSET 2208988800ULL

char recv_buf[RECV_BUF_SIZE];


/* From NTP RFCs https://www.ietf.org/rfc/rfc5905.txt */
struct ntp_format {
  u8_t flags;
  u8_t stratum;       /* stratum */
  u8_t poll;          /* poll interval */
  s8_t precision;     /* precision */
  u32_t rootdelay;    /* root delay */
  u32_t rootdisp;     /* root dispersion */
  u32_t refid;        /* reference ID */
  u32_t reftime_sec;  /* reference time */
  u32_t reftime_frac; /* reference time */
  u32_t org_sec;      /* origin timestamp */
  u32_t org_frac;     /* origin timestamp */
  u32_t rec_sec;      /* receive timestamp */
  u32_t rec_frac;     /* receive timestamp */
  u32_t xmt_sec;      /* transmit timestamp */
  u32_t xmt_frac;     /* transmit timestamp */
};

int blocking_recv(int fd, u8_t *buf, u32_t size, u32_t flags) {
  int err;

  do {
    err = recv(fd, buf, size, flags);
  } while (err &amp;lt; 0 &amp;amp;&amp;amp; errno == EAGAIN);

  return err;
}

int blocking_recvfrom(int fd, void *buf, u32_t size, u32_t flags,
    struct sockaddr *src_addr, socklen_t *addrlen) {
  int err;

  do {
    err = recvfrom(fd, buf, size, flags, src_addr, addrlen);
  } while (err &amp;lt; 0 &amp;amp;&amp;amp; errno == EAGAIN);

  return err;
}

int blocking_send(int fd, u8_t *buf, u32_t size, u32_t flags) {
  int err;

  do {
    err = send(fd, buf, size, flags);
  } while (err &amp;lt; 0 &amp;amp;&amp;amp; errno == EAGAIN);

  return err;
}

int blocking_connect(int fd, struct sockaddr *local_addr, socklen_t len) {
  int err;

  do {
    err = connect(fd, local_addr, len);
  } while (err &amp;lt; 0 &amp;amp;&amp;amp; errno == EAGAIN);

  return err;
}

void setup_psm(void) {
  /*
	* GPRS Timer 3 value (octet 3)
	*
	* Bits 5 to 1 represent the binary coded timer value.
	*
	* Bits 6 to 8 defines the timer value unit for the GPRS timer as follows:
	* Bits 
	* 8 7 6
	* 0 0 0 value is incremented in multiples of 10 minutes 
	* 0 0 1 value is incremented in multiples of 1 hour 
	* 0 1 0 value is incremented in multiples of 10 hours
	* 0 1 1 value is incremented in multiples of 2 seconds
	* 1 0 0 value is incremented in multiples of 30 seconds
	* 1 0 1 value is incremented in multiples of 1 minute
	* 1 1 0 value is incremented in multiples of 320 hours (NOTE 1)
	* 1 1 1 value indicates that the timer is deactivated (NOTE 2).
	*/
  char psm_settings[] = CONFIG_LTE_PSM_REQ_RPTAU;
  printk(&amp;quot;PSM bits: %c%c%c\n&amp;quot;, psm_settings[0], psm_settings[1],
      psm_settings[2]);
  printk(&amp;quot;PSM Interval: %c%c%c%c%c\n&amp;quot;, psm_settings[3], psm_settings[4],
      psm_settings[5], psm_settings[6], psm_settings[7]);
  int err = lte_lc_psm_req(true);
  if (err &amp;lt; 0) {
    printk(&amp;quot;Error setting PSM: %d Errno: %d\n&amp;quot;, err, errno);
  }
}

void ntp_swap_endianess(struct ntp_format *ntp) {
  if (ntp) {
    ntp-&amp;gt;org_frac = htonl(ntp-&amp;gt;org_frac);
    ntp-&amp;gt;org_sec = htonl(ntp-&amp;gt;org_sec);
    ntp-&amp;gt;reftime_frac = htonl(ntp-&amp;gt;reftime_frac);
    ntp-&amp;gt;reftime_sec = htonl(ntp-&amp;gt;reftime_sec);
    ntp-&amp;gt;rec_frac = htonl(ntp-&amp;gt;rec_frac);
    ntp-&amp;gt;rec_sec = htonl(ntp-&amp;gt;rec_sec);
    ntp-&amp;gt;xmt_frac = htonl(ntp-&amp;gt;xmt_frac);
    ntp-&amp;gt;xmt_sec = htonl(ntp-&amp;gt;xmt_sec);
  }
}

void ntp_print(struct ntp_format *ntp) {
  if (ntp == NULL) {
    return;
  }

  printk(&amp;quot;Flags: %u\n&amp;quot;, ntp-&amp;gt;flags);
  printk(&amp;quot;Stratum: %u\n&amp;quot;, ntp-&amp;gt;stratum);
  printk(&amp;quot;Poll: %u\n&amp;quot;, ntp-&amp;gt;poll);
  printk(&amp;quot;Precision: %u\n&amp;quot;, ntp-&amp;gt;precision);
  printk(&amp;quot;Root delay: %u\n&amp;quot;, ntp-&amp;gt;rootdelay);
  printk(&amp;quot;Root dispersion: %u\n&amp;quot;, ntp-&amp;gt;rootdisp);
  printk(&amp;quot;Ref ID: %u\n&amp;quot;, ntp-&amp;gt;refid);
  printk(&amp;quot;Ref timestamp: %u&amp;quot;, ntp-&amp;gt;reftime_sec);
  printk(&amp;quot;%u\n&amp;quot;, ntp-&amp;gt;reftime_frac);
  printk(&amp;quot;Orig Timestamp: %u&amp;quot;, ntp-&amp;gt;org_sec);
  printk(&amp;quot;%u\n&amp;quot;, ntp-&amp;gt;org_frac);
  printk(&amp;quot;Receive timestamp: %u&amp;quot;, ntp-&amp;gt;rec_sec);
  printk(&amp;quot;%u\n&amp;quot;, ntp-&amp;gt;rec_frac);
  printk(&amp;quot;Transmit: %u&amp;quot;, ntp-&amp;gt;xmt_sec);
  printk(&amp;quot;%u\n&amp;quot;, ntp-&amp;gt;xmt_frac);

  u32_t unix_time = ntp-&amp;gt;xmt_sec - NTP_TO_UNIX_OFFSET;
  printk(&amp;quot;Unix time: %d\n&amp;quot;, unix_time);

  time_t time = unix_time;
  printf(&amp;quot;Time: %s&amp;quot;, ctime(&amp;amp;time));
}

/****************************************************************************************************
*name: 
*to do:  PSM mode
*return: 
****************************************************************************************************/
void PSM_etat(void) {

  const char *at_commandsOFF[] = {
      &amp;quot;AT+CSCON?&amp;quot;,
  };

  /* Ouverture Socket */
  int at_socket_fd = socket(AF_LTE, 0, NPROTO_AT);

  if (at_socket_fd &amp;lt; 0) {
    printk(&amp;quot;Socket err: %d, errno: %d\r\n&amp;quot;, at_socket_fd, errno);
  }
  /* Envoi Commande AT */
  for (int i = 0; i &amp;lt; ARRAY_SIZE(at_commandsOFF); i++) {
    int bytes_written = send(at_socket_fd, at_commandsOFF[i],
        strlen(at_commandsOFF[i]), 0);
    if (bytes_written &amp;gt; 0) {
      int r_bytes =
          blocking_recv(at_socket_fd, recv_buf,
              sizeof(recv_buf), MSG_DONTWAIT);
      if (r_bytes &amp;gt; 0) {
        printk(&amp;quot;%s&amp;quot;, recv_buf);
      }
    }
  }
  /* Fermeture Socket */
  (void)close(at_socket_fd);
}

void PSM_config(void) {

  const char *at_commandsOFF[] = {
      &amp;quot;AT+CSCON = 3&amp;quot;};

  /* Ouverture Socket */
  int at_socket_fd = socket(AF_LTE, 0, NPROTO_AT);

  if (at_socket_fd &amp;lt; 0) {
    printk(&amp;quot;Socket err: %d, errno: %d\r\n&amp;quot;, at_socket_fd, errno);
  }
  /* Envoi Commande AT */
  for (int i = 0; i &amp;lt; ARRAY_SIZE(at_commandsOFF); i++) {
    int bytes_written = send(at_socket_fd, at_commandsOFF[i],
        strlen(at_commandsOFF[i]), 0);
    if (bytes_written &amp;gt; 0) {
      int r_bytes =
          blocking_recv(at_socket_fd, recv_buf,
              sizeof(recv_buf), MSG_DONTWAIT);
      if (r_bytes &amp;gt; 0) {
        printk(&amp;quot;%s&amp;quot;, recv_buf);
      }
    }
  }
  /* Fermeture Socket */
  (void)close(at_socket_fd);
}

void RAI_setup(void) {

  const char *at_commandsOFF[] = {
      &amp;quot;AT%XRAI=4&amp;quot;};

  /* Ouverture Socket */
  int at_socket_fd = socket(AF_LTE, 0, NPROTO_AT);

  if (at_socket_fd &amp;lt; 0) {
    printk(&amp;quot;Socket err: %d, errno: %d\r\n&amp;quot;, at_socket_fd, errno);
  }
  /* Envoi Commande AT */
  for (int i = 0; i &amp;lt; ARRAY_SIZE(at_commandsOFF); i++) {
    int bytes_written = send(at_socket_fd, at_commandsOFF[i],
        strlen(at_commandsOFF[i]), 0);
    if (bytes_written &amp;gt; 0) {
      int r_bytes =
          blocking_recv(at_socket_fd, recv_buf,
              sizeof(recv_buf), MSG_DONTWAIT);
      if (r_bytes &amp;gt; 0) {
        printk(&amp;quot;%s&amp;quot;, recv_buf);
      }
    }
  }
  /* Fermeture Socket */
  (void)close(at_socket_fd);
}

void RAI_config(void) {

  const char *at_commandsOFF[] = {
      &amp;quot;AT%XRAI?&amp;quot;};

  /* Ouverture Socket */
  int at_socket_fd = socket(AF_LTE, 0, NPROTO_AT);

  if (at_socket_fd &amp;lt; 0) {
    printk(&amp;quot;Socket err: %d, errno: %d\r\n&amp;quot;, at_socket_fd, errno);
  }
  /* Envoi Commande AT */
  for (int i = 0; i &amp;lt; ARRAY_SIZE(at_commandsOFF); i++) {
    int bytes_written = send(at_socket_fd, at_commandsOFF[i],
        strlen(at_commandsOFF[i]), 0);
    if (bytes_written &amp;gt; 0) {
      int r_bytes =
          blocking_recv(at_socket_fd, recv_buf,
              sizeof(recv_buf), MSG_DONTWAIT);
      if (r_bytes &amp;gt; 0) {
        printk(&amp;quot;%s&amp;quot;, recv_buf);
      }
    }
  }
  /* Fermeture Socket */
  (void)close(at_socket_fd);
}

void app_ntp_socket_start(void) {
  struct addrinfo *res;
  struct ntp_format ntp = {0x48};
  socklen_t addrlen = sizeof(struct sockaddr_storage);

  /* Just hard code the packet format */
	//u8_t send_buf[sizeof(struct ntp_format)] = { 0x48,0x65,0x6c,0x6c,0x6f };
        u8_t send_buf[sizeof(struct ntp_format)] = { 0x48};

  ntp.flags = 0xe3;
  int err = getaddrinfo(NTP_HOST, NULL, NULL, &amp;amp;res);

  printk(&amp;quot;getaddrinfo err: %d\n\r&amp;quot;, err);
  ((struct sockaddr_in *)res-&amp;gt;ai_addr)-&amp;gt;sin_port = htons(NTP_PORT);
  struct sockaddr_in local_addr;

  local_addr.sin_family = AF_INET;
  local_addr.sin_port = htons(0);
  local_addr.sin_addr.s_addr = 0;

  int client_fd = socket(AF_INET, SOCK_DGRAM, 0);
  printk(&amp;quot;client_fd: %d\n\r&amp;quot;, client_fd);

  err = bind(client_fd, (struct sockaddr *)&amp;amp;local_addr,
      sizeof(local_addr));
  printk(&amp;quot;bind err: %d\n\r&amp;quot;, err);

  err = blocking_connect(client_fd, (struct sockaddr *)res-&amp;gt;ai_addr,
      sizeof(struct sockaddr_in));
  if (err &amp;lt; 0) {
    printk(&amp;quot;connect err: %d\n\r&amp;quot;, errno);
  }

  err = send(client_fd, send_buf, sizeof(send_buf), 0);
  printk(&amp;quot;sendto ret: %d\n\r&amp;quot;, err);
  // freeaddrinfo(res);
  //(void)close(client_fd);

  if (err &amp;lt; 0) {
    printk(&amp;quot;sendto err: %d\n\r&amp;quot;, errno);
  }

  //err = blocking_recvfrom(client_fd, &amp;amp;ntp, sizeof(struct ntp_format), 0,
  //(struct sockaddr *)res-&amp;gt;ai_addr, &amp;amp;addrlen);
  if (err &amp;lt; 0) {
    printk(&amp;quot;recvfrom err: %d\n\r&amp;quot;, errno);
  }

  ntp_swap_endianess(&amp;amp;ntp);
  ntp_print(&amp;amp;ntp);
  freeaddrinfo(res);
  (void)close(client_fd);
}

static volatile bool run_udp;

void app_timer_handler(struct k_timer *dummy) {
  static u32_t minutes;

  minutes++;
  /* This shall match the PSM interval */
  if (minutes % 10 == 0) {
    run_udp = true;
  }
  printk(&amp;quot;Elapsed time: %d\n&amp;quot;, minutes);
}

K_TIMER_DEFINE(app_timer, app_timer_handler, NULL);

void timer_init(void) {
  k_timer_start(&amp;amp;app_timer, K_MINUTES(1), K_MINUTES(1));
}
int main(void) {

  if (!IS_ENABLED(CONFIG_AT_HOST_LIBRARY)) {
    /* Stop the UART RX for power consumption reasons */
    NRF_UARTE0_NS-&amp;gt;TASKS_STOPRX = 1;
  }

  printk(&amp;quot;DATA POST test with PSM\n&amp;quot;);

  app_ntp_socket_start();

  PSM_config();
  RAI_config();

  RAI_setup();
  setup_psm();

  PSM_etat();
  RAI_config();

  timer_init();
  k_sleep(30000);

  PSM_etat();
  while (1) {
    k_sleep(5000);
    if (run_udp == true) {
      printk(&amp;quot;Run HTTP POST\n&amp;quot;);
      run_udp = false;

      app_ntp_socket_start();
    }
  }
  return 1;
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;And the log:&lt;br /&gt;&lt;pre class="ui-code" data-mode="text"&gt;(09:52:24.015) SPM: prepare to jump to Non-Secure image.
(09:52:25.663) ***** Booting Zephyr OS build v2.0.99-ncs1-rc1-11-g9be97c63368a *****
(09:52:54.821) +CEREG: 2,&amp;quot;C356&amp;quot;,&amp;quot;00124DD0&amp;quot;,9,0,0,&amp;quot;11100000&amp;quot;,&amp;quot;11100000&amp;quot;
(09:53:07.796) +CEREG: 1,&amp;quot;C356&amp;quot;,&amp;quot;00124DD0&amp;quot;,9,,,&amp;quot;11100000&amp;quot;,&amp;quot;11100000&amp;quot;
(09:53:07.818) DATA POST test with PSM
(09:53:11.641) getaddrinfo err: 0
(09:53:11.648) &amp;lt;CR&amp;gt;client_fd: 3
(09:53:11.648) &amp;lt;CR&amp;gt;bind err: 0
(09:53:11.648) &amp;lt;CR&amp;gt;sendto ret: 48
(09:53:11.648) &amp;lt;CR&amp;gt;Flags: 227
(09:53:11.718) Stratum: 0
(09:53:11.718) Poll: 0
(09:53:11.718) Precision: 0
(09:53:11.718) Root delay: 0
(09:53:11.718) Root dispersion: 0
(09:53:11.718) Ref ID: 0
(09:53:11.718) Ref timestamp: 00
(09:53:11.718) Orig Timestamp: 00
(09:53:11.718) Receive timestamp: 00
(09:53:11.718) Transmit: 00
(09:53:11.718) Unix time: 2085978496
(09:53:11.718) Time: Thu Feb  7 06:28:16 2036&amp;lt;CR&amp;gt;
(09:53:11.718) ERROR&amp;lt;CR&amp;gt;
(09:53:11.718) %XRAI: 0&amp;lt;CR&amp;gt;
(09:53:11.718) OK&amp;lt;CR&amp;gt;
(09:53:11.718) OK&amp;lt;CR&amp;gt;
(09:53:11.718) PSM bits: 101
(09:53:11.718) PSM Interval: 01010
(09:53:11.718) +CSCON: 0,1&amp;lt;CR&amp;gt;
(09:53:11.718) OK&amp;lt;CR&amp;gt;
(09:53:11.718) %XRAI: 4&amp;lt;CR&amp;gt;
(09:53:11.718) OK&amp;lt;CR&amp;gt;
(09:53:17.144) +CEREG: 1,&amp;quot;C356&amp;quot;,&amp;quot;00124DD0&amp;quot;,9,,,&amp;quot;00000000&amp;quot;,&amp;quot;10010100&amp;quot;
(09:53:41.690) +CSCON: 0,0&amp;lt;CR&amp;gt;
(09:53:41.699) OK&amp;lt;CR&amp;gt;
(09:54:11.681) Elapsed time: 1
(09:55:11.677) Elapsed time: 2
(09:56:11.677) Elapsed time: 3
(09:57:11.677) Elapsed time: 4
(09:58:11.675) Elapsed time: 5
(09:59:11.668) Elapsed time: 6
(10:00:11.671) Elapsed time: 7
(10:01:11.663) Elapsed time: 8
(10:02:11.669) Elapsed time: 9
(10:03:11.669) Elapsed time: 10
(10:03:11.760) Run HTTP POST
(10:03:11.760) getaddrinfo err: 0
(10:03:11.760) &amp;lt;CR&amp;gt;client_fd: 3
(10:03:11.760) &amp;lt;CR&amp;gt;bind err: 0
(10:03:11.760) &amp;lt;CR&amp;gt;sendto ret: 48
(10:03:11.760) &amp;lt;CR&amp;gt;Flags: 227
(10:03:11.760) Stratum: 0
(10:03:11.760) Poll: 0
(10:03:11.760) Precision: 0
(10:03:11.760) Root delay: 0
(10:03:11.760) Root dispersion: 0
(10:03:11.760) Ref ID: 0
(10:03:11.760) Ref timestamp: 00
(10:03:11.760) Orig Timestamp: 00
(10:03:11.760) Receive timestamp: 00
(10:03:11.760) Transmit: 00
(10:03:11.760) Unix time: 2085978496
(10:03:11.760) Time: Thu Feb  7 06:28:16 2036&amp;lt;CR&amp;gt;
(10:03:53.920) +CEREG: 1,&amp;quot;FFFE&amp;quot;,&amp;quot;FFFFFFFF&amp;quot;,9,,,&amp;quot;00000000&amp;quot;,&amp;quot;10010100&amp;quot;
(10:04:11.667) Elapsed time: 11
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;As i said before, i send one udp trame, i configure modem to XRAI 4 and switch on psm mode (with verification) n ground floor.&lt;br /&gt;&lt;br /&gt;On &amp;quot;Elapsed time 5&amp;quot; i&amp;#39;m going to my basement and wait to send second udp trame. But we can see transmission with&lt;/p&gt;
&lt;p&gt;&amp;quot;(10:03:11.760) Run HTTP POST&lt;br /&gt;(10:03:11.760) getaddrinfo err: 0&lt;br /&gt;(10:03:11.760) &amp;lt;CR&amp;gt;client_fd: 3&lt;br /&gt;(10:03:11.760) &amp;lt;CR&amp;gt;bind err: 0&lt;br /&gt;(10:03:11.760) &amp;lt;CR&amp;gt;sendto ret: 48&amp;quot;&lt;br /&gt;&lt;br /&gt;But i don&amp;#39;t get anything on my server...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I have&amp;nbsp;commented:&lt;br /&gt;&amp;nbsp;//err = blocking_recvfrom(client_fd, &amp;amp;ntp, sizeof(struct ntp_format), 0,&lt;br /&gt; //(struct sockaddr *)res-&amp;gt;ai_addr, &amp;amp;addrlen);&lt;br /&gt;to not get stuck&lt;br /&gt;&lt;br /&gt;To send an udp frame, does my device necessarily need to receive a request from the server?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: UDP questions</title><link>https://devzone.nordicsemi.com/thread/258299?ContentTypeID=1</link><pubDate>Fri, 03 Jul 2020 11:57:57 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:dfbdbcec-4dac-450a-8835-077f53eab76e</guid><dc:creator>Hakon</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;would you please run &lt;a href="https://github.com/Rallare/fw-nrfconnect-nrf/tree/nrf9160_samples/samples/nrf9160/udp_with_psm"&gt;this sample&lt;/a&gt; and share the output log?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: UDP questions</title><link>https://devzone.nordicsemi.com/thread/257730?ContentTypeID=1</link><pubDate>Wed, 01 Jul 2020 08:08:46 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:18952a26-8245-4ad1-a3e2-967c2303386a</guid><dc:creator>Maxvi33</dc:creator><description>&lt;p&gt;Nobody :( ?&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>