mirror of /home/gitosis/repositories/libowfat.git
Mirror of :pserver:cvs@cvs.fefe.de:/cvs libowfat
https://www.fefe.de/libowfat/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
2.0 KiB
60 lines
2.0 KiB
.TH socket_fastopen_connect6 3 |
|
.SH NAME |
|
socket_fastopen_connect6 \- make a TCP connection and send some data |
|
.SH SYNTAX |
|
.B #include <socket.h> |
|
|
|
ssize_t \fBsocket_fastopen_connect6\fP(int \fIs\fR, |
|
const char \fIip\fR[16],uint16 \fIport\fR,uint32 \fIscope_id\fR, |
|
const char* \fIbuf\fR,size_t \fIlen\fR); |
|
.SH DESCRIPTION |
|
socket_fastopen_connect6 attempts to make a connection from TCP socket \fIs\fR to |
|
TCP port \fIport\fR on IP address \fIip\fR. If that succeeds, it |
|
attempts to send \fIlen\fR bytes from \fIbuf\fR. |
|
|
|
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 |
|
.sp 1 |
|
.IP \(bu |
|
>=0, to indicate that the connection succeeded and this many bytes were |
|
sent. |
|
.IP \(bu |
|
-1, setting errno to error_inprogress or error_wouldblock, to indicate |
|
that the socket is non-blocking |
|
.IP \(bu |
|
-1, setting errno to something else, to indicate that the connection |
|
failed (and failed immediately, if the socket is non-blocking). |
|
.PP |
|
|
|
When a background connection succeeds or fails, \fIs\fR 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. |
|
|
|
.SH EXAMPLE |
|
#include <socket.h> |
|
|
|
int \fIs\fR; |
|
char \fIip\fR[16]; |
|
uint16 \fIp\fR; |
|
uint32 \fIscope_id\fR; |
|
|
|
\fIs\fR = socket_tcp6b(); |
|
socket_bind6(s,ip,p); |
|
socket_fastopen_connect6(s,ip,p,scope_id,"hello",5); |
|
|
|
.SH "SEE ALSO" |
|
socket_connect6(3), socket_fastopen_connect4(3), socket_fastopen(3)
|
|
|