This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

server client socket bind error on nrf9160

I want to create server and client in nrf9160 not through LTE. only transmit on locally in nrf9160 

//prj.conf
# enable libs
CONFIG_NEWLIB_LIBC=y
CONFIG_NEWLIB_LIBC_FLOAT_PRINTF=y
CONFIG_FPU=y

# -Og debug
CONFIG_DEBUG=y

# enable device
CONFIG_UART_INTERRUPT_DRIVEN=y
CONFIG_I2C=y

# pthread using
#CONFIG_POSIX_API=y
#CONFIG_PTHREAD_IPC=y
#CONFIG_POSIX_MQUEUE=y

# Network driver config
CONFIG_TEST_RANDOM_GENERATOR=y

# networking
CONFIG_NETWORKING=y
CONFIG_NET_IPV4=y
CONFIG_NET_IPV6=y
CONFIG_NET_TCP=y
CONFIG_NET_UDP=y
CONFIG_NET_CONNECTION_MANAGER=y

# Sockets
CONFIG_NET_SOCKETS=y
CONFIG_NET_SOCKETS_POSIX_NAMES=y
CONFIG_POSIX_MAX_FDS=6

# Packet socket configuration
CONFIG_NET_SOCKETS_PACKET=y

# Enable the DNS resolver
CONFIG_DNS_RESOLVER=y



//main.c
int err;
int opt_val;
int socketfd;
struct ifreq ifr;
struct sockaddr_in server_addr = {0};

socketfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
//socketfd = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);

if (socketfd < 0)
{
printk("Could not create server_addr socket: %s\n", strerror(errno));
}

opt_val = 1;
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = htonl(INADDR_ANY); //remote connect
//server_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); //local connect
server_addr.sin_port = htons(4242);

err = setsockopt(socketfd, SOL_SOCKET, SO_REUSEADDR, (const char *)&opt_val, sizeof(opt_val));
if (err < 0)
{
printk("Could not setsockopt: %s\n", strerror(errno));
}

err = bind(socketfd, (struct sockaddr*)&server_addr, sizeof(server_addr));
if (err < 0)
{
printk("Could not bind server_addr socket: %s\n", strerror(errno));
}

/////////////////////////////////

why bind error, should i create iface in vlan?

Related