nb.html

来自「perl教程」· HTML 代码 · 共 96 行

HTML
96
字号
<?xml version="1.0" ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<!-- saved from url=(0017)http://localhost/ -->
<script language="JavaScript" src="../../../displayToc.js"></script>
<script language="JavaScript" src="../../../tocParas.js"></script>
<script language="JavaScript" src="../../../tocTab.js"></script>
<link rel="stylesheet" type="text/css" href="../../../scineplex.css">
<title>Net::HTTP::NB - Non-blocking HTTP client</title>
<link rel="stylesheet" href="../../../Active.css" type="text/css" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rev="made" href="mailto:" />
</head>

<body>

<script>writelinks('__top__',3);</script>
<h1><a>Net::HTTP::NB - Non-blocking HTTP client</a></h1>
<p><a name="__index__"></a></p>

<!-- INDEX BEGIN -->

<ul>

	<li><a href="#name">NAME</a></li>
	<li><a href="#synopsis">SYNOPSIS</a></li>
	<li><a href="#description">DESCRIPTION</a></li>
	<li><a href="#see_also">SEE ALSO</a></li>
	<li><a href="#copyright">COPYRIGHT</a></li>
</ul>
<!-- INDEX END -->

<hr />
<p>
</p>
<h1><a name="name">NAME</a></h1>
<p>Net::HTTP::NB - Non-blocking HTTP client</p>
<p>
</p>
<hr />
<h1><a name="synopsis">SYNOPSIS</a></h1>
<pre>
 <span class="keyword">use</span> <span class="variable">Net::HTTP::NB</span><span class="operator">;</span>
 <span class="keyword">my</span> <span class="variable">$s</span> <span class="operator">=</span> <span class="variable">Net::HTTP::NB</span><span class="operator">-&gt;</span><span class="variable">new</span><span class="operator">(</span><span class="string">Host</span> <span class="operator">=&gt;</span> <span class="string">"www.perl.com"</span><span class="operator">)</span> <span class="operator">||</span> <span class="keyword">die</span> <span class="variable">$@</span><span class="operator">;</span>
 <span class="variable">$s</span><span class="operator">-&gt;</span><span class="variable">write_request</span><span class="operator">(</span><span class="string">GET</span> <span class="operator">=&gt;</span> <span class="string">"/"</span><span class="operator">);</span>
</pre>
<pre>
 <span class="keyword">use</span> <span class="variable">IO::Select</span><span class="operator">;</span>
 <span class="keyword">my</span> <span class="variable">$sel</span> <span class="operator">=</span> <span class="variable">IO::Select</span><span class="operator">-&gt;</span><span class="variable">new</span><span class="operator">(</span><span class="variable">$s</span><span class="operator">);</span>
</pre>
<pre>
 <span class="variable">READ_HEADER</span><span class="operator">:</span> <span class="operator">{</span>
    <span class="keyword">die</span> <span class="string">"Header timeout"</span> <span class="keyword">unless</span> <span class="variable">$sel</span><span class="operator">-&gt;</span><span class="variable">can_read</span><span class="operator">(</span><span class="number">10</span><span class="operator">);</span>
    <span class="keyword">my</span><span class="operator">(</span><span class="variable">$code</span><span class="operator">,</span> <span class="variable">$mess</span><span class="operator">,</span> <span class="variable">%h</span><span class="operator">)</span> <span class="operator">=</span> <span class="variable">$s</span><span class="operator">-&gt;</span><span class="variable">read_response_headers</span><span class="operator">;</span>
    <span class="keyword">redo</span> <span class="variable">READ_HEADER</span> <span class="keyword">unless</span> <span class="variable">$code</span><span class="operator">;</span>
 <span class="operator">}</span>
</pre>
<pre>
 <span class="keyword">while</span> <span class="operator">(</span><span class="number">1</span><span class="operator">)</span> <span class="operator">{</span>
    <span class="keyword">die</span> <span class="string">"Body timeout"</span> <span class="keyword">unless</span> <span class="variable">$sel</span><span class="operator">-&gt;</span><span class="variable">can_read</span><span class="operator">(</span><span class="number">10</span><span class="operator">);</span>
    <span class="keyword">my</span> <span class="variable">$buf</span><span class="operator">;</span>
    <span class="keyword">my</span> <span class="variable">$n</span> <span class="operator">=</span> <span class="variable">$s</span><span class="operator">-&gt;</span><span class="variable">read_entity_body</span><span class="operator">(</span><span class="variable">$buf</span><span class="operator">,</span> <span class="number">1024</span><span class="operator">);</span>
    <span class="keyword">last</span> <span class="keyword">unless</span> <span class="variable">$n</span><span class="operator">;</span>
    <span class="keyword">print</span> <span class="variable">$buf</span><span class="operator">;</span>
 <span class="operator">}</span>
</pre>
<p>
</p>
<hr />
<h1><a name="description">DESCRIPTION</a></h1>
<p>Same interface as <code>Net::HTTP</code> but it will never try multiple reads
when the <code>read_response_headers()</code> or <code>read_entity_body()</code> methods are
invoked.  This make it possible to multiplex multiple Net::HTTP::NB
using select without risk blocking.</p>
<p>If <code>read_response_headers()</code> did not see enough data to complete the
headers an empty list is returned.</p>
<p>If <code>read_entity_body()</code> did not see new entity data in its read
the value -1 is returned.</p>
<p>
</p>
<hr />
<h1><a name="see_also">SEE ALSO</a></h1>
<p><a href="../../../lib/Net/HTTP.html">the Net::HTTP manpage</a></p>
<p>
</p>
<hr />
<h1><a name="copyright">COPYRIGHT</a></h1>
<p>Copyright 2001 Gisle Aas.</p>
<p>This library is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.</p>

</body>

</html>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?