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

FreeBSD Manual Pages

  
 
  

home | help
socket_fastopen_connect6(3) Library Functions Manual socket_fastopen_connect6(3)

NAME
     socket_fastopen_connect6 - make a TCP connection and send some data

SYNTAX
     #include <libowfat/socket.h>

     ssize_t socket_fastopen_connect6(int s,
		      const char ip[16],uint16 port,uint32 scope_id,
		      const char* buf,size_t len);

DESCRIPTION
     socket_fastopen_connect6 attempts to make a connection from TCP socket s to
     TCP  port port on IP address ip.  If that succeeds, it attempts to send len
     bytes from buf.

     The difference to calling socket_connect6 followed by  write  is  that,  on
     platforms	supporting TCP Fast Open, socket_fastopen_connect6 will send the
     first data packet in the third packet of the TCP handshake, saving one use-
     less ACK packet in network traffic.

     This is only useful for protocols where the client sends the first bytes.

     socket_connect6 may return

     *	    >=0, to indicate that the connection succeeded and this  many  bytes
	    were sent.

     *	    -1,  setting errno to error_inprogress or error_wouldblock, to indi-
	    cate that the socket is non-blocking

     *	    -1, setting errno to something else, to indicate that the connection
	    failed (and failed immediately, if the socket is non-blocking).

     When a background connection succeeds or fails, s becomes writable; you can
     use socket_connected to see whether the connection succeeded.  If the  con-
     nection failed, socket_connected returns 0, setting errno appropriately.

     Once a TCP socket is connected, you can use the read and write system calls
     to transmit data.

     You  can  call  socket_connect6 without calling socket_bind6.  This has the
     effect as first calling socket_bind6 with IP address :: and port 0.

EXAMPLE
       #include <libowfat/socket.h>

       int s;
       char ip[16];
       uint16 p;
       uint32 scope_id;

       s = socket_tcp6b();
       socket_bind6(s,ip,p);
       socket_fastopen_connect6(s,ip,p,scope_id,"hello",5);

SEE ALSO
     socket_connect6(3), socket_fastopen_connect4(3), socket_fastopen(3)

						     socket_fastopen_connect6(3)

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

home | help