libdill: Structured Concurrency for C

NAME

tcp_listen_mem - start listening for incoming TCP connections

SYNOPSIS

#include <libdill.h>

int tcp_listen_mem(const struct ipaddr *addr, int backlog, void *mem);

DESCRIPTION

TCP protocol is a bytestream protocol (i.e. data can be sent via bsend() and received via brecv()) for transporting data among machines.

This function starts listening for incoming connection on the address specified in addr argument. backlog is the maximum number of connections that can be held open without user accepting them.

The socket is allocated in user-supplied memory. The memory is passed in mem argument. It must be at least TCP_LISTENER_SIZE bytes long and can be deallocated only after the socket is closed. Unless you are hyper-optimizing use tcp_listen() instead.

The socket can be cleanly shut down using tcp_close() function.

RETURN VALUE

The function returns the handle of the listening socket. On error, it returns -1 and sets errno to one of the values below.

ERRORS

EXAMPLE

struct ipaddr addr;
int rc = ipaddr_local(&addr, NULL, 5555, 0);
char mem[TCP_LISTENER_SIZE];
int s = tcp_listen_mem(&addr, 10, mem);