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

FreeBSD Manual Pages

  
 
  

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

NAME
       tcp_accept_mem -	accepts	an incoming TCP	connection

SYNOPSIS
	      #include <libdill.h>

	      int tcp_accept_mem(
		  int s,
		  struct ipaddr* addr,
		  struct tcp_storage* mem,
		  int64_t deadline);

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

       This function accepts an	incoming TCP connection.

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

       s: Socket created by tcp_listen.

       addr: Out parameter.  IP	address	of the connecting  endpoint.   Can  be
       NULL.

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

       deadline: A point in time when the operation should time	out,  in  mil-
       liseconds.   Use	the now	function to get	your current point in time.  0
       means immediate timeout,	i.e., perform the operation if possible	or re-
       turn without blocking if	not.  -1 means no  deadline,  i.e.,  the  call
       will block forever if the operation cannot be performed.

       The socket can be cleanly shut down using tcp_close function.

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

RETURN VALUE
       In case of success the function returns handle of the  new  connection.
       In  case	of error it returns -1 and sets	errno to one of	the values be-
       low.

ERRORS
        EBADF:	Invalid	handle.

        ECANCELED: Current coroutine was canceled.

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

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

        ENOMEM: Not enough memory.

        ENOTSUP: The handle does not support this operation.

        ETIMEDOUT: Deadline was reached.

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) now(3) tcp_accept(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_listen_mem(3)
       tcp_listener_fromfd(3) tcp_listener_fromfd_mem(3)

libdill							     TCP_ACCEPT_MEM(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=tcp_accept_mem&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help