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
       o EBADF:	Invalid	handle.

       o ECANCELED: Current coroutine was canceled.

       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.

       o ENOTSUP: The handle does not support this operation.

       o 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)

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_accept_mem&sektion=3&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help