AP05/curl_arm64/share/man/man3/curl_multi_socket.3

70 lines
2.8 KiB
Groff
Raw Normal View History

2025-12-02 05:06:35 +00:00
.\" generated by cd2nroff 0.1 from curl_multi_socket.md
.TH curl_multi_socket 3 "2025-07-07" libcurl
.SH NAME
curl_multi_socket \- read/write available data
.SH SYNOPSIS
.nf
#include <curl/curl.h>
CURLMcode curl_multi_socket(CURLM *multi_handle, curl_socket_t sockfd,
int *running_handles);
.fi
.SH DESCRIPTION
This function is deprecated. Use \fIcurl_multi_socket_action(3)\fP instead with
\fBev_bitmask\fP set to 0.
At return, the integer \fBrunning_handles\fP points to contains the number of
still running easy handles within the multi handle. When this number reaches
zero, all transfers are complete/done. Note that when you call
\fIcurl_multi_socket(3)\fP on a specific socket and the counter decreases by one, it
DOES NOT necessarily mean that this exact socket/transfer is the one that
completed. Use \fIcurl_multi_info_read(3)\fP to figure out which easy handle that
completed.
The \fIcurl_multi_socket(3)\fP functions inform the application about updates in the
socket (file descriptor) status by doing none, one, or multiple calls to the
socket callback function set with the \fICURLMOPT_SOCKETFUNCTION(3)\fP option to
\fIcurl_multi_setopt(3)\fP. They update the status with changes since the previous
time the callback was called.
Get the timeout time by setting the \fICURLMOPT_TIMERFUNCTION(3)\fP option with
\fIcurl_multi_setopt(3)\fP. Your application then gets called with information on
how long to wait for socket actions at most before doing the timeout action:
call the \fIcurl_multi_socket_action(3)\fP function with the \fBsockfd\fP argument set
to CURL_SOCKET_TIMEOUT. You can also use the \fIcurl_multi_timeout(3)\fP function to
poll the value at any given time, but for an event\-based system using the
callback is far better than relying on polling the timeout value.
.SH PROTOCOLS
This functionality affects all supported protocols
.SH EXAMPLE
.nf
int main(void)
{
/* the event-library gets told when there activity on the socket 'fd',
which we translate to a call to curl_multi_socket_action() */
int running;
int rc;
int fd = 2;
CURLM *multi = curl_multi_init();
rc = curl_multi_socket(multi, fd, &running);
}
.fi
.SH DEPRECATED
\fIcurl_multi_socket(3)\fP is deprecated, use \fIcurl_multi_socket_action(3)\fP instead.
.SH AVAILABILITY
Added in curl 7.15.4
.SH RETURN VALUE
This function returns a CURLMcode indicating success or error.
CURLM_OK (0) means everything was OK, non\-zero means an error occurred, see
\fIlibcurl\-errors(3)\fP.
The return code is for the whole multi stack. Problems still might have
occurred on individual transfers even when one of these functions return OK.
.SH SEE ALSO
.BR curl_multi_cleanup (3),
.BR curl_multi_fdset (3),
.BR curl_multi_info_read (3),
.BR curl_multi_init (3),
.BR the hiperfifo.c example