[boost-doc-zh] r294 committed - [No log message]

  • From: codesite-noreply@xxxxxxxxxx
  • To: boost-doc-zh-notify@xxxxxxxxxxxxx
  • Date: Tue, 25 Aug 2009 05:10:22 +0000

Revision: 294
Author: totti19851101
Date: Mon Aug 24 22:09:55 2009
Log: [No log message]
http://code.google.com/p/boost-doc-zh/source/detail?r=294

Modified:
 /trunk/doc/html/boost_asio/tutorial/tutdaytime1.html

=======================================
--- /trunk/doc/html/boost_asio/tutorial/tutdaytime1.html Wed May 27 03:09:50 2009 +++ /trunk/doc/html/boost_asio/tutorial/tutdaytime1.html Mon Aug 24 22:09:55 2009
@@ -1,6 +1,6 @@
 <html>
 <head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Daytime.1 - A synchronous TCP daytime client</title>
 <link rel="stylesheet" href="../../boostbook.css" type="text/css">
 <meta name="generator" content="DocBook XSL Stylesheets V1.74.3">
@@ -24,23 +24,20 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="boost_asio.tutorial.tutdaytime1"></a><a class="link" href="tutdaytime1.html" title="Daytime.1 - A synchronous TCP daytime client"> Daytime.1 - A synchronous
-      TCP daytime client</a>
+<a name="boost_asio.tutorial.tutdaytime1"></a><a class="link" href="tutdaytime1.html" title="Daytime.1 - A synchronous TCP daytime client"> Daytime.1 - 同步TCP daytime客户端</a>
 </h3></div></div></div>
 <p>
- This tutorial program shows how to use asio to implement a client application
-        with TCP.
+        本示例程序显示如何使用Asio来实现一个TCP客户端程序。
       </p>
 <p>
-        We start by including the necessary header files.
+       让我们从添加必需的头文件开始。
       </p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">array</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">asio</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <p>
- The purpose of this application is to access a daytime service, so we need
-        the user to specify the server.
+ 这个应用程序的目的是访问一个daytime服务器,因此我们需要用户去指定服 务器。(如time-nw.nist.gov,用IP亦可)。
       </p>
<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">asio</span><span class="special">::</span><span class="identifier">ip</span><span class="special">::</span><span class="identifier">tcp</span><span class="special">;</span>

@@ -55,38 +52,33 @@
     <span class="special">}</span>
 </pre>
 <p>
- All programs that use asio need to have at least one <a class="link" href="../reference/io_service.html" title="io_service">io_service</a>
-        object.
+ 所有使用asio的程序都至少需要一个<a class="link" href="../reference/io_service.html" title="io_service">io_service</a>
+        对象。
       </p>
<pre class="programlisting"> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">asio</span><span class="special">::</span><span class="identifier">io_service</span> <span class="identifier">io_service</span><span class="special">;</span>
 </pre>
 <p>
- We need to turn the server name that was specified as a parameter to the - application, into a TCP endpoint. To do this we use an <a class="link" href="../reference/ip__tcp/resolver.html" title="ip::tcp::resolver">ip::tcp::resolver</a>
-        object.
+ 我们需要把服务器的名称转化为TCP的节点,而该名称是通过应用程序的参数 指定的。我们使用<a class="link" href="../reference/ip__tcp/resolver.html" title="ip::tcp::resolver">ip::tcp::resolver</a>
+        对象来完成。
       </p>
<pre class="programlisting"> <span class="identifier">tcp</span><span class="special">::</span><span class="identifier">resolver</span> <span class="identifier">resolver</span><span class="special">(</span><span class="identifier">io_service</span><span class="special">);</span>
 </pre>
 <p>
- A resolver takes a query object and turns it into a list of endpoints. We - construct a query using the name of the server, specified in <code class="computeroutput"><span class="identifier">argv</span><span class="special">[</span><span class="number">1</span><span class="special">]</span></code>, and the name of the service, in this case - <code class="computeroutput"><span class="string">"daytime"</span></code>. + 一个resolver对象获得一个query对象,并将其转换为节点列表.我们通过 <code class="computeroutput"><span class="identifier">argv</span><span class="special">[</span><span class="number">1</span><span class="special">]</span></code>中的服务器名称和服务名,在这里是 + <code class="computeroutput"><span class="string">"daytime"</span></code>,构造一个query。
       </p>
<pre class="programlisting"> <span class="identifier">tcp</span><span class="special">::</span><span class="identifier">resolver</span><span class="special">::</span><span class="identifier">query</span> <span class="identifier">query</span><span class="special">(</span><span class="identifier">argv</span><span class="special">[</span><span class="number">1</span><span class="special">],</span> <span class="string">"daytime"</span><span class="special">);</span>
 </pre>
 <p>
- The list of endpoints is returned using an iterator of type <a class="link" href="../reference/ip__basic_resolver/iterator.html" title="ip::basic_resolver::iterator">ip::tcp::resolver::iterator</a>. - A default constructed <a class="link" href="../reference/ip__basic_resolver/iterator.html" title="ip::basic_resolver::iterator">ip::tcp::resolver::iterator</a>
-        object is used as the end iterator.
+ 节点列表用<a class="link" href="../reference/ip__basic_resolver/iterator.html" title="ip::basic_resolver::iterator">ip::tcp::resolver::iterator</a>类型的迭 代器返回。 + 返回的iterator将采用<a class="link" href="../reference/ip__basic_resolver/iterator.html" title="ip::basic_resolver::iterator">ip::tcp::resolver::iterator</a>
+        的默认构造函数来构造。
       </p>
<pre class="programlisting"> <span class="identifier">tcp</span><span class="special">::</span><span class="identifier">resolver</span><span class="special">::</span><span class="identifier">iterator</span> <span class="identifier">endpoint_iterator</span> <span class="special">=</span> <span class="identifier">resolver</span><span class="special">.</span><span class="identifier">resolve</span><span class="special">(</span><span class="identifier">query</span><span class="special">);</span> <span class="identifier">tcp</span><span class="special">::</span><span class="identifier">resolver</span><span class="special">::</span><span class="identifier">iterator</span> <span class="identifier">end</span><span class="special">;</span>
 </pre>
 <p>
- Now we create and connect the socket. The list of endpoints obtained above - may contain both IPv4 and IPv6 endpoints, so we need to try each of them - until we find one that works. This keeps the client program independent of
-        a specific IP version.
+ 现在我们建立一个socket并连接之,由于获得的节点既有IPv4也有IPv6的。所 以,我们需要依次尝试访问它们直到找到一个可以正常工作的。这样做可使得我们的程 序独立于特定的IP版本。
       </p>
<pre class="programlisting"> <span class="identifier">tcp</span><span class="special">::</span><span class="identifier">socket</span> <span class="identifier">socket</span><span class="special">(</span><span class="identifier">io_service</span><span class="special">);</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">system</span><span class="special">::</span><span class="identifier">error_code</span> <span class="identifier">error</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">asio</span><span class="special">::</span><span class="identifier">error</span><span class="special">::</span><span class="identifier">host_not_found</span><span class="special">;</span>
@@ -99,15 +91,11 @@
<span class="keyword">throw</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">system</span><span class="special">::</span><span class="identifier">system_error</span><span class="special">(</span><span class="identifier">error</span><span class="special">);</span>
 </pre>
 <p>
- The connection is open. All we need to do now is read the response from the
-        daytime service.
+        连接打开后,现在我们需要做的就是读取daytime服务器的响应。
       </p>
 <p>
- We use a <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</span></code> to hold the received data. The boost::asio::buffer() - function automatically determines the size of the array to help prevent buffer - overruns. Instead of a <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</span></code>, - we could have used a <code class="computeroutput"><span class="keyword">char</span> <span class="special">[]</span></code> - or <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span></code>. + 我们使用<code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</span></code>来存放接收到的数据。 The boost::asio::buffer() + 函数会自动确定array的长度来防止缓冲区溢出。我们也可以使用 char [] 或 std::vector来代替boost::array。
       </p>
<pre class="programlisting"> <span class="keyword">for</span> <span class="special">(;;)</span>
     <span class="special">{</span>
@@ -117,9 +105,8 @@
<span class="identifier">size_t</span> <span class="identifier">len</span> <span class="special">=</span> <span class="identifier">socket</span><span class="special">.</span><span class="identifier">read_some</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">asio</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">(</span><span class="identifier">buf</span><span class="special">),</span> <span class="identifier">error</span><span class="special">);</span>
 </pre>
 <p>
- When the server closes the connection, the <a class="link" href="../reference/basic_stream_socket/read_some.html" title="basic_stream_socket::read_some">ip::tcp::socket::read_some()</a> - function will exit with the boost::asio::error::eof error, which is how we
-        know to exit the loop.
+ 当服务器关闭连接时,<a class="link" href="../reference/basic_stream_socket/read_some.html" title="basic_stream_socket::read_some">ip::tcp::socket::read_some()</a> + 函数会以boost::asio::error::eof错误标志返回, 通过该错误标志,我们知 道应该退出循环了。
       </p>
<pre class="programlisting"> <span class="keyword">if</span> <span class="special">(</span><span class="identifier">error</span> <span class="special">==</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">asio</span><span class="special">::</span><span class="identifier">error</span><span class="special">::</span><span class="identifier">eof</span><span class="special">)</span> <span class="keyword">break</span><span class="special">;</span> <span class="comment">// Connection closed cleanly by peer.
@@ -130,7 +117,7 @@
     <span class="special">}</span>
 </pre>
 <p>
-        Finally, handle any exceptions that may have been thrown.
+        最后,处理所有可能抛出的异常 。
       </p>
 <pre class="programlisting">  <span class="special">}</span>
<span class="keyword">catch</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">exception</span><span class="special">&amp;</span> <span class="identifier">e</span><span class="special">)</span>
@@ -139,14 +126,13 @@
   <span class="special">}</span>
 </pre>
 <p>
- See the <a class="link" href="tutdaytime1/src.html" title="Source listing for Daytime.1">full source listing</a> + 查看<a class="link" href="tutdaytime1/src.html" title="Source listing for Daytime.1">本例全部源代码</a>
       </p>
 <p>
- Return to the <a class="link" href="../tutorial.html" title="Tutorial">tutorial index</a> + 返回<a class="link" href="../tutorial.html" title="Tutorial">指南 </a>
       </p>
 <p>
- Next: <a class="link" href="tutdaytime2.html" title="Daytime.2 - A synchronous TCP daytime server">Daytime.2 - A synchronous
-        TCP daytime server</a>
+ 下一例: <a class="link" href="tutdaytime2.html" title="Daytime.2 - A synchronous TCP daytime server">Daytime.2 - 同步TCP daytime服务器</a>
       </p>
 </div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"; width="100%"><tr>

Other related posts:

  • » [boost-doc-zh] r294 committed - [No log message] - codesite-noreply