bionic (3) socket_fastopen_connect6.3.gz

Provided by: libowfat-dev_0.30-2ubuntu1_amd64 bug

NAME

       socket_fastopen_connect6 - make a TCP connection and send some data

SYNTAX

       #include <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 <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)