Hi,
I was trying to set a receive timeout on a socket, however when I use setsockopt function, it returns ENOPROTOOPT error. Please see below the snippet of my code. I am developing an application over nRF52840 DK, and I am using nRF Connect with ncs version 1..5. I would really appreciate your help in this regard.
Best regards,
Omer
bool init_app() { bool ret = true ; recv_timeout.tv_sec = RECEIVE_TIMEOUT_IN_SECONDS ; recv_timeout.tv_usec = 0 ; memset(&tx_addr, 0, sizeof(tx_addr)) ; tx_addr.sin6_family = AF_INET6 ; tx_addr.sin6_port = htons(TRANSMITTER_PORT) ; inet_pton(AF_INET6, CONFIG_NET_CONFIG_MY_IPV6_ADDR, &(tx_addr.sin6_addr)) ; tx_sock_id = socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDP) ; if(tx_sock_id == SOCKET_ERROR_CODE) { printk("Error in creating socket for communication \n") ; ret = false ; } if(setsockopt(tx_sock_id, SOL_SOCKET, SO_RCVTIMEO, (const char *) &recv_timeout, sizeof(recv_timeout)) < 0) { printk("Error in setting socket option \n") ; switch(errno) { case EBADF: printk("sock id is not a valid socket descriptor \n") ; break ; case EFAULT: printk("Not a valid address is optval \n") ; break ; case EINVAL: printk("oplen invalid \n") ; break ; case ENOPROTOOPT: printk("Unknown option \n") ; break ; case ENOTSOCK: printk("File not a socket \n") ; break ; default: printk("Failure reason is unknown \n") ; } ret = false ; } }