PUBLISHED_FROM=93fe1cc2c5e2513509511a81e5919cbd37056b10
1.7 KiB
title | decl_name | symbol_kind | signature |
---|---|---|---|
mg_connect_opt() | mg_connect_opt | func | struct mg_connection *mg_connect_opt(struct mg_mgr *mgr, const char *address, MG_CB(mg_event_handler_t handler, void *user_data); |
Connects to a remote host.
The address
format is [PROTO://]HOST:PORT
. PROTO
could be tcp
or
udp
. HOST
could be an IP address,
IPv6 address (if Mongoose is compiled with -DMG_ENABLE_IPV6
) or a host
name. If HOST
is a name, Mongoose will resolve it asynchronously. Examples
of valid addresses: google.com:80
, udp://1.2.3.4:53
, 10.0.0.1:443
,
[::1]:80
See the mg_connect_opts
structure for a description of the optional
parameters.
Returns a new outbound connection or NULL
on error.
NOTE: The connection remains owned by the manager, do not free().
NOTE: To enable IPv6 addresses -DMG_ENABLE_IPV6
should be specified
in the compilation flags.
NOTE: The new connection will receive MG_EV_CONNECT
as its first event
which will report the connect success status.
If the asynchronous resolution fails or the connect()
syscall fails for
whatever reason (e.g. with ECONNREFUSED
or ENETUNREACH
), then
MG_EV_CONNECT
event will report failure. Code example below:
static void ev_handler(struct mg_connection *nc, int ev, void *ev_data) {
int connect_status;
switch (ev) {
case MG_EV_CONNECT:
connect_status = * (int *) ev_data;
if (connect_status == 0) {
// Success
} else {
// Error
printf("connect() error: %s\n", strerror(connect_status));
}
break;
...
}
}
...
mg_connect(mgr, "my_site.com:80", ev_handler);