Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
TCP_LISTEN_MEM(3)	   libdill Library Functions	     TCP_LISTEN_MEM(3)

NAME
       tcp_listen_mem -	starts listening for incoming TCP connections

SYNOPSIS
	      #include <libdill.h>

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

DESCRIPTION
       TCP  protocol  is  a reliable bytestream	protocol for transporting data
       over network.  It is defined in RFC 793.

       This function starts listening for incoming connections.	  The  connec-
       tions can be accepted using tcp_accept function.

       This  function allows to	avoid one dynamic memory allocation by storing
       the object in user-supplied memory.  Unless  you	 are  hyper-optimizing
       use tcp_listen instead.

       addr: IP	address	to listen on.

       backlog:	 Maximum  number  of connections that can be kept open without
       accepting them.

       mem: The	structure to store the newly created object in.	 It  must  not
       be deallocated before the object	is closed.

       The  socket can be closed either	by hclose or tcp_close.	 Both ways are
       equivalent.

       This function is	not available  if  libdill  is	compiled  with	--dis-
       able-sockets option.

RETURN VALUE
       In  case	of success the function	returns	newly created socket.  In case
       of error	it returns -1 and sets errno to	one of the values below.

ERRORS
       o EADDRINUSE: The specified address is already in use.

       o EADDRNOTAVAIL:	The specified address is not available from the	 local
	 machine.

       o EINVAL: Invalid argument.

       o EMFILE: The maximum number of file descriptors	in the process are al-
	 ready open.

       o ENFILE: The maximum number of file descriptors	in the system are  al-
	 ready open.

       o ENOMEM: Not enough memory.

EXAMPLE
	      struct ipaddr addr;
	      ipaddr_local(&addr, NULL,	5555, 0);
	      int ls = tcp_listen(&addr, 10);
	      int s = tcp_accept(ls, NULL, -1);
	      bsend(s, "ABC", 3, -1);
	      char buf[3];
	      brecv(s, buf, sizeof(buf), -1);
	      tcp_close(s);
	      tcp_close(ls);

SEE ALSO
       brecv(3)	 brecvl(3)  bsend(3) bsendl(3) hclose(3) tcp_accept(3) tcp_ac-
       cept_mem(3) tcp_close(3)	tcp_connect(3) tcp_connect_mem(3)  tcp_done(3)
       tcp_fromfd(3)  tcp_fromfd_mem(3)	 tcp_listen(3)	tcp_listener_fromfd(3)
       tcp_listener_fromfd_mem(3)

libdill							     TCP_LISTEN_MEM(3)

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUE | ERRORS | EXAMPLE | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=tcp_listen_mem&sektion=3&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help