<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/class.eventbufferevent.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'es',
  ),
  'this' => 
  array (
    0 => 'eventbufferevent.connecthost.php',
    1 => 'EventBufferEvent::connectHost',
    2 => 'Conexi&oacute;n a un host',
  ),
  'up' => 
  array (
    0 => 'class.eventbufferevent.php',
    1 => 'EventBufferEvent',
  ),
  'prev' => 
  array (
    0 => 'eventbufferevent.connect.php',
    1 => 'EventBufferEvent::connect',
  ),
  'next' => 
  array (
    0 => 'eventbufferevent.construct.php',
    1 => 'EventBufferEvent::__construct',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    'path' => 'reference/event/eventbufferevent/connecthost.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="eventbufferevent.connecthost" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">EventBufferEvent::connectHost</h1>
  <p class="verinfo">(PECL event &gt;= 1.2.6-beta)</p><p class="refpurpose"><span class="refname">EventBufferEvent::connectHost</span> &mdash; <span class="dc-title">Conexión a un host</span></p>

 </div>
 <div class="refsect1 description" id="refsect1-eventbufferevent.connecthost-description">
  <h3 class="title">Descripción</h3>
  <div class="methodsynopsis dc-description">
   <span class="modifier">public</span>
   <span class="methodname"><strong>EventBufferEvent::connectHost</strong></span>(<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam">
    
    <span class="type"><a href="class.eventdnsbase.php" class="type EventDnsBase">EventDnsBase</a></span> <code class="parameter">$dns_base</code>
   </span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam">
    
    <span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$hostname</code>
   </span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam">
    
    <span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$port</code>
   </span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam">
    
    <span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$family</code>
    <span class="initializer"> = EventUtil::AF_UNSPEC</span>
   </span><br>): <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></div>

  <p class="para rdfs-comment">
   Resuelve el nombre de host DNS, buscando la dirección del tipo
   <code class="parameter">family</code> (constante <code class="literal">EventUtil::AF_*</code>).
   Si la resolución del nombre falla, la función de retrollamada del evento
   será llamada con un evento de error. Si la resolución tiene éxito,
   se realizará un intento de conexión, de manera similar a como lo hace el método
   <span class="methodname"><a href="eventbufferevent.connect.php" class="methodname">EventBufferEvent::connect()</a></span>.
  </p>
  <p class="para">
   El parámetro <code class="parameter">dns_base</code> es opcional.
   Puede ser <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>, o bien un objeto creado con el método
   <span class="methodname"><a href="eventdnsbase.construct.php" class="methodname">EventDnsBase::__construct()</a></span>.
   Para una resolución de nombre de host asíncrona, pase una fuente de evento de base DNS válida. De lo contrario, la resolución del nombre de host
   será bloqueante.
  </p>
  <blockquote class="note"><p><strong class="note">Nota</strong>: 
   <p class="para">
    <span class="classname"><a href="class.eventdnsbase.php" class="classname">EventDnsBase</a></span> solo está disponible si
    <code class="literal">Event</code> está configurado con la opción
    <strong class="option configure">--with-event-extra</strong>
    (biblioteca <code class="literal">event_extra</code>,
    <em>el soporte de las funcionalidades específicas de libevent
     incluyendo HTTP, DNS y RPC</em>).
   </p>
  </p></blockquote>
  <blockquote class="note"><p><strong class="note">Nota</strong>: 
   <p class="para">
    <span class="methodname"><strong>EventBufferEvent::connectHost()</strong></span>
    requiere <code class="literal">libevent-2.0.3-alpha</code> o posteriores.
   </p>
  </p></blockquote>
 </div>

 <div class="refsect1 parameters" id="refsect1-eventbufferevent.connecthost-parameters">
  <h3 class="title">Parámetros</h3>
  <dl>
   
    <dt>
     <code class="parameter">dns_base</code>
    </dt>
    <dd>
     <p class="para">
      Objeto <span class="classname"><a href="class.eventdnsbase.php" class="classname">EventDnsBase</a></span> en el caso
      donde el DNS debe ser resuelto de manera asíncrona. De lo contrario, <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>.
     </p>
    </dd>
   
   
    <dt>
     <code class="parameter">hostname</code>
    </dt>
    <dd>
     <p class="para">
      El nombre de host al cual se intenta realizar la conexión.
      Los formatos reconocidos son:
      <div class="example-contents screen">
<div class="parameterscode"><pre class="parameterscode">www.example.com (hostname)
 1.2.3.4 (ipv4address)
 ::1 (ipv6address)
[::1] ([ipv6address])</pre>
</div>
      </div>
     </p>
    </dd>
   
   
    <dt>
     <code class="parameter">port</code>
    </dt>
    <dd>
     <p class="para">
      El número del puerto
     </p>
    </dd>
   
   
    <dt>
     <code class="parameter">family</code>
    </dt>
    <dd>
     <p class="para">
      Familia de la dirección.
      <strong><code><a href="class.eventutil.php#eventutil.constants.af-unspec">EventUtil::AF_UNSPEC</a></code></strong>,
      <strong><code><a href="class.eventutil.php#eventutil.constants.af-inet">EventUtil::AF_INET</a></code></strong> o
      <strong><code><a href="class.eventutil.php#eventutil.constants.af-inet6">EventUtil::AF_INET6</a></code></strong>. Ver las
      <a href="class.eventutil.php#eventutil.constants" class="link">constantes EventUtil</a>.
     </p>
    </dd>
   
  </dl>
 </div>

 <div class="refsect1 returnvalues" id="refsect1-eventbufferevent.connecthost-returnvalues">
  <h3 class="title">Valores devueltos</h3>
  <p class="para">
   Esta función retorna <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> en caso de éxito o <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> si ocurre un error.
  </p>
 </div>

 <div class="refsect1 examples" id="refsect1-eventbufferevent.connecthost-examples">
  <h3 class="title">Ejemplos</h3>
  <div class="example" id="example-1">
   <p><strong>Ejemplo #1 Ejemplo con <span class="function"><strong>EventBufferEvent::connectHost()</strong></span></strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">/* Función de retrollamada de lectura */<br /></span><span style="color: #007700">function </span><span style="color: #0000BB">readcb</span><span style="color: #007700">(</span><span style="color: #0000BB">$bev</span><span style="color: #007700">, </span><span style="color: #0000BB">$base</span><span style="color: #007700">) {<br />    </span><span style="color: #FF8000">//$input = $bev-&gt;input; //$bev-&gt;getInput();<br /><br />    //$pos = $input-&gt;search("TTP");<br />    </span><span style="color: #0000BB">$pos </span><span style="color: #007700">= </span><span style="color: #0000BB">$bev</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">search</span><span style="color: #007700">(</span><span style="color: #DD0000">"TTP"</span><span style="color: #007700">);<br /><br />    while ((</span><span style="color: #0000BB">$n </span><span style="color: #007700">= </span><span style="color: #0000BB">$bev</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">remove</span><span style="color: #007700">(</span><span style="color: #0000BB">$buf</span><span style="color: #007700">, </span><span style="color: #0000BB">1024</span><span style="color: #007700">)) &gt; </span><span style="color: #0000BB">0</span><span style="color: #007700">) {<br />        echo </span><span style="color: #0000BB">$buf</span><span style="color: #007700">;<br />    }<br />}<br /><br /></span><span style="color: #FF8000">/* Función de retrollamada del evento */<br /></span><span style="color: #007700">function </span><span style="color: #0000BB">eventcb</span><span style="color: #007700">(</span><span style="color: #0000BB">$bev</span><span style="color: #007700">, </span><span style="color: #0000BB">$events</span><span style="color: #007700">, </span><span style="color: #0000BB">$base</span><span style="color: #007700">) {<br />    if (</span><span style="color: #0000BB">$events </span><span style="color: #007700">&amp; </span><span style="color: #0000BB">EventBufferEvent</span><span style="color: #007700">::</span><span style="color: #0000BB">CONNECTED</span><span style="color: #007700">) {<br />        echo </span><span style="color: #DD0000">"Conectado.\n"</span><span style="color: #007700">;<br />    } elseif (</span><span style="color: #0000BB">$events </span><span style="color: #007700">&amp; (</span><span style="color: #0000BB">EventBufferEvent</span><span style="color: #007700">::</span><span style="color: #0000BB">ERROR </span><span style="color: #007700">| </span><span style="color: #0000BB">EventBufferEvent</span><span style="color: #007700">::</span><span style="color: #0000BB">EOF</span><span style="color: #007700">)) {<br />        if (</span><span style="color: #0000BB">$events </span><span style="color: #007700">&amp; </span><span style="color: #0000BB">EventBufferEvent</span><span style="color: #007700">::</span><span style="color: #0000BB">ERROR</span><span style="color: #007700">) {<br />            echo </span><span style="color: #DD0000">"Error DNS: "</span><span style="color: #007700">, </span><span style="color: #0000BB">$bev</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getDnsErrorString</span><span style="color: #007700">(), </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br />        }<br /><br />        echo </span><span style="color: #DD0000">"Cerrando\n"</span><span style="color: #007700">;<br />        </span><span style="color: #0000BB">$base</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">exit</span><span style="color: #007700">();<br />        exit(</span><span style="color: #DD0000">"Hecho !\n"</span><span style="color: #007700">);<br />    }<br />}<br /><br /></span><span style="color: #0000BB">$base </span><span style="color: #007700">= new </span><span style="color: #0000BB">EventBase</span><span style="color: #007700">();<br /><br /></span><span style="color: #0000BB">$dns_base </span><span style="color: #007700">= new </span><span style="color: #0000BB">EventDnsBase</span><span style="color: #007700">(</span><span style="color: #0000BB">$base</span><span style="color: #007700">, </span><span style="color: #0000BB">TRUE</span><span style="color: #007700">); </span><span style="color: #FF8000">// Resolución DNS asíncrona<br /></span><span style="color: #007700">if (!</span><span style="color: #0000BB">$dns_base</span><span style="color: #007700">) {<br />    exit(</span><span style="color: #DD0000">"Fallo en la inicialización de la base DNS\n"</span><span style="color: #007700">);<br />}<br /><br /></span><span style="color: #0000BB">$bev </span><span style="color: #007700">= new </span><span style="color: #0000BB">EventBufferEvent</span><span style="color: #007700">(</span><span style="color: #0000BB">$base</span><span style="color: #007700">, </span><span style="color: #FF8000">/* uso de un socket interno */ </span><span style="color: #0000BB">NULL</span><span style="color: #007700">,<br />    </span><span style="color: #0000BB">EventBufferEvent</span><span style="color: #007700">::</span><span style="color: #0000BB">OPT_CLOSE_ON_FREE </span><span style="color: #007700">| </span><span style="color: #0000BB">EventBufferEvent</span><span style="color: #007700">::</span><span style="color: #0000BB">OPT_DEFER_CALLBACKS</span><span style="color: #007700">,<br />    </span><span style="color: #DD0000">"readcb"</span><span style="color: #007700">, </span><span style="color: #FF8000">/* writecb */ </span><span style="color: #0000BB">NULL</span><span style="color: #007700">, </span><span style="color: #DD0000">"eventcb"</span><span style="color: #007700">, </span><span style="color: #0000BB">$base<br /></span><span style="color: #007700">);<br />if (!</span><span style="color: #0000BB">$bev</span><span style="color: #007700">) {<br />    exit(</span><span style="color: #DD0000">"Fallo al crear el socket bufferevent\n"</span><span style="color: #007700">);<br />}<br /><br /></span><span style="color: #FF8000">//$bev-&gt;setCallbacks("readcb", /* writecb */ NULL, "eventcb", $base);<br /></span><span style="color: #0000BB">$bev</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">enable</span><span style="color: #007700">(</span><span style="color: #0000BB">Event</span><span style="color: #007700">::</span><span style="color: #0000BB">READ </span><span style="color: #007700">| </span><span style="color: #0000BB">Event</span><span style="color: #007700">::</span><span style="color: #0000BB">WRITE</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$output </span><span style="color: #007700">= </span><span style="color: #0000BB">$bev</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">output</span><span style="color: #007700">; </span><span style="color: #FF8000">//$bev-&gt;getOutput();<br /></span><span style="color: #007700">if (!</span><span style="color: #0000BB">$output</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">add</span><span style="color: #007700">(<br />    </span><span style="color: #DD0000">"GET </span><span style="color: #007700">{</span><span style="color: #0000BB">$argv</span><span style="color: #007700">[</span><span style="color: #0000BB">2</span><span style="color: #007700">]}</span><span style="color: #DD0000"> HTTP/1.0\r\n"</span><span style="color: #007700">.<br />    </span><span style="color: #DD0000">"Host: </span><span style="color: #007700">{</span><span style="color: #0000BB">$argv</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">]}</span><span style="color: #DD0000">\r\n"</span><span style="color: #007700">.<br />    </span><span style="color: #DD0000">"Connection: Close\r\n\r\n"<br /></span><span style="color: #007700">)) {<br />    exit(</span><span style="color: #DD0000">"Fallo al añadir la solicitud en el búfer de salida\n"</span><span style="color: #007700">);<br />}<br /><br />if (!</span><span style="color: #0000BB">$bev</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">connectHost</span><span style="color: #007700">(</span><span style="color: #0000BB">$dns_base</span><span style="color: #007700">, </span><span style="color: #0000BB">$argv</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">], </span><span style="color: #0000BB">80</span><span style="color: #007700">, </span><span style="color: #0000BB">EventUtil</span><span style="color: #007700">::</span><span style="color: #0000BB">AF_UNSPEC</span><span style="color: #007700">)) {<br />    exit(</span><span style="color: #DD0000">"Imposible conectar al host </span><span style="color: #007700">{</span><span style="color: #0000BB">$argv</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">]}</span><span style="color: #DD0000">\n"</span><span style="color: #007700">);<br />}<br /><br /></span><span style="color: #0000BB">$base</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">dispatch</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

   <div class="example-contents"><p>Resultado del ejemplo anterior es similar a:</p></div>
   <div class="example-contents screen">
<div class="examplescode"><pre class="examplescode">Conectado.
HTTP/1.0 301 Moved Permanently
Location: http://www.google.co.uk/
Content-Type: text/html; charset=UTF-8
Date: Sat, 09 Mar 2013 12:21:19 GMT
Expires: Mon, 08 Apr 2013 12:21:19 GMT
Cache-Control: public, max-age=2592000
Server: gws
Content-Length: 221
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN

&lt;HTML&gt;&lt;HEAD&gt;&lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html;charset=utf-8&quot;&gt;
&lt;TITLE&gt;301 Moved&lt;/TITLE&gt;&lt;/HEAD&gt;&lt;BODY&gt;
&lt;H1&gt;301 Moved&lt;/H1&gt;
The document has moved
&lt;A HREF=&quot;http://www.google.co.uk/&quot;&gt;here&lt;/A&gt;.
&lt;/BODY&gt;&lt;/HTML&gt;
Cerrando
Hecho !</pre>
</div>
   </div>
  </div>
 </div>

 <div class="refsect1 seealso" id="refsect1-eventbufferevent.connecthost-seealso">
  <h3 class="title">Ver también</h3>
  <ul class="simplelist">
   <li>
    <span class="methodname"><a href="eventbufferevent.connect.php" class="methodname" rel="rdfs-seeAlso">EventBufferEvent::connect()</a> - Conecta el descriptor de fichero del b&uacute;fer de eventos a la direcci&oacute;n proporcionada,
   o al socket UNIX</span>
   </li>
  </ul>
 </div>

</div><?php manual_footer($setup); ?>