Provided by: libowfat-dev_0.32-4_amd64 bug

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 useless 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  indicate  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 connection 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)