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">-></span><span class="variable">new</span><span class="operator">(</span><span class="string">Host</span> <span class="operator">=></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">-></span><span class="variable">write_request</span><span class="operator">(</span><span class="string">GET</span> <span class="operator">=></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">-></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">-></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">-></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">-></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">-></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 + -
显示快捷键?