Documentación offline PHP master

EventBufferEvent::connect

master Ver versión oficial en línea Licencia CC-BY-3.0Descargado el 2026-08-02

En esta página

EventBufferEvent::connect

Conecta el descriptor de fichero del búfer de eventos a la dirección proporcionada, o al socket UNIX

Descripción#

public EventBufferEvent::connect(string $addr): bool
```php

Conecta el descriptor de fichero del búfer de eventos a la dirección proporcionada (opcionalmente, proporcionando el puerto), o al socket UNIX.

Si el socket no está asignado al búfer de eventos, este método asigna un nuevo socket y lo hace no bloqueante internamente.

Para resolver los nombres DNS (de forma asíncrona), utilice el método EventBufferEvent::connectHost.

## Parámetros

`addr`  
Debe contener una dirección IP con, opcionalmente, el número del puerto, o una ruta hacia el socket UNIX. Los formatos reconocidos son :

    [IPv6Address]:port
    [IPv6Address]
    IPv6Address
    IPv4Address:port
    IPv4Address
    unix:path



Tenga en cuenta que el prefijo `'unix:'` actualmente no distingue entre mayúsculas y minúsculas.

## Valores devueltos

Esta función retorna `true` en caso de éxito o `false` si ocurre un error.

## Ejemplos

Ejemplo con `EventBufferEvent::connect`
getInput(); while (($n = $input->remove($buf, 1024)) > 0) { echo $buf; } } /* Función de retrollamada de evento */ function eventcb($bev, $events, $base) { if ($events & EventBufferEvent::CONNECTED) { echo "Conectado.\n"; } elseif ($events & (EventBufferEvent::ERROR | EventBufferEvent::EOF)) { if ($events & EventBufferEvent::ERROR) { echo "Error DNS: ", $bev->getDnsErrorString(), PHP_EOL; } echo "Cierre\n"; $base->exit(); exit("Hecho !\n"); } } $base = new EventBase(); echo "paso 1\n"; $bev = new EventBufferEvent($base, /* usar socket interno */ NULL, EventBufferEvent::OPT_CLOSE_ON_FREE | EventBufferEvent::OPT_DEFER_CALLBACKS); if (!$bev) { exit("Fallo al crear el socket bufferevent\n"); } echo "paso 2\n"; $bev->setCallbacks("readcb", /* writecb */ NULL, "eventcb", $base); $bev->enable(Event::READ | Event::WRITE); echo "paso 3\n"; /* Envía la solicitud */ $output = $bev->getOutput(); if (!$output->add( "GET /index.cphp HTTP/1.0\r\n". "Connection: Close\r\n\r\n" )) { exit("Fallo al añadir la solicitud en el búfer de salida\n"); } /* Conexión al host de forma asíncrona. * Conocemos la IP, y por lo tanto, no necesitamos resolución DNS. */ if (!$bev->connect("127.0.0.1:80")) { exit("Imposible conectar al host\n"); } /* Distribuye los eventos pendientes */ $base->dispatch();
Resultado del ejemplo anterior es similar a:

    paso 1
    paso 2
    paso 3
    Conectado.
    HTTP/1.1 200 OK
    Server: nginx/1.2.6
    Date: Sat, 09 Mar 2013 10:06:58 GMT
    Content-Type: text/html; charset=utf-8
    Connection: close
    X-Powered-By: PHP/5.4.11--pl2-gentoo

    sdfsdfsf
    Cierre
    Hecho !

Conexión a un socket UNIX, lectura de la respuesta desde el servidor, y visualización en una consola
base = $base; $this->bev = new EventBufferEvent($base, NULL, EventBufferEvent::OPT_CLOSE_ON_FREE, array ($this, "read_cb"), NULL, array ($this, "event_cb")); if (!$this->bev->connect("unix:$sock_path")) { trigger_error("Fallo al conectar al socket `$sock_path'", E_USER_ERROR); } $this->bev->enable(Event::READ); } function __destruct() { if ($this->bev) { $this->bev->free(); $this->bev = NULL; } } function dispatch() { $this->base->dispatch(); } function read_cb($bev, $unused) { $in = $bev->input; printf("Recepción de %ld bytes\n", $in->length); printf("----- datos ----\n"); printf("%ld:\t%s\n", (int) $in->length, $in->pullup(-1)); $this->bev->free(); $this->bev = NULL; $this->base->exit(NULL); } function event_cb($bev, $events, $unused) { if ($events & EventBufferEvent::ERROR) { echo "Error desde bufferevent\n"; } if ($events & (EventBufferEvent::EOF | EventBufferEvent::ERROR)) { $bev->free(); $bev = NULL; } elseif ($events & EventBufferEvent::CONNECTED) { $bev->output->add("test\n"); } } } if ($argc <= 1) { exit("La ruta hacia el socket no está proporcionada\n"); } $sock_path = $argv[1]; $base = new EventBase(); $cl = new MyUnixSocketClient($base, $sock_path); $cl->dispatch(); ?>

```php

Resultado del ejemplo anterior es similar a:

Recepción de 5 bytes
----- datos ----
5:  test

Véase también#

EventBufferEvent::connectHost