⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 a00693.html

📁 opendds 1.2 最新版 面向分布式实时网络编程
💻 HTML
📖 第 1 页 / 共 3 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>OpenDDS: OpenDDS::DCPS::SimpleTcpTransport Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
  <ul>
    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
    <li id="current"><a href="classes.html"><span>Classes</span></a></li>
    <li><a href="files.html"><span>Files</span></a></li>
    <li><a href="dirs.html"><span>Directories</span></a></li>
    <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
    <li>
      <form action="search.php" method="get">
        <table cellspacing="0" cellpadding="0" border="0">
          <tr>
            <td><label>&nbsp;<u>S</u>earch&nbsp;for&nbsp;</label></td>
            <td><input type="text" name="query" value="" size="20" accesskey="s"/></td>
          </tr>
        </table>
      </form>
    </li>
  </ul></div>
<div class="tabs">
  <ul>
    <li><a href="classes.html"><span>Alphabetical&nbsp;List</span></a></li>
    <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
    <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
    <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
  </ul></div>
<div class="nav">
<a class="el" href="a01301.html">OpenDDS</a>::<a class="el" href="a01275.html">DCPS</a>::<a class="el" href="a00693.html">SimpleTcpTransport</a></div>
<h1>OpenDDS::DCPS::SimpleTcpTransport Class Reference</h1><!-- doxytag: class="OpenDDS::DCPS::SimpleTcpTransport" --><!-- doxytag: inherits="OpenDDS::DCPS::TransportImpl" --><code>#include &lt;SimpleTcpTransport.h&gt;</code>
<p>
Inheritance diagram for OpenDDS::DCPS::SimpleTcpTransport:<p><center><img src="a02979.png" border="0" usemap="#a02980" alt="Inheritance graph"></center>
<map name="a02980">
<area href="a00746.html" shape="rect" coords="71,82,297,106" alt="">
<area href="a00640.html" shape="rect" coords="5,7,363,31" alt="">
</map>
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for OpenDDS::DCPS::SimpleTcpTransport:<p><center><img src="a02981.png" border="0" usemap="#a02982" alt="Collaboration graph"></center>
<map name="a02982">
<area href="a00685.html" shape="rect" coords="79,295,436,319" alt="">
<area href="a00746.html" shape="rect" coords="144,112,371,136" alt="">
<area href="a00639.html" shape="rect" coords="139,7,376,31" alt="">
<area href="a00682.html" shape="rect" coords="395,112,656,136" alt="">
</map>
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00154.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#ff39cd6babb5e36101aa411cf61f2262">SimpleTcpTransport</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#6b39e7b61a318ac8a3c1648c0e8a2854">~SimpleTcpTransport</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00683.html">SimpleTcpConfiguration</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#1833020e1c012eb58c4e17b7824373a2">get_configuration</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#3ca04bfd9e4a1e9912bad213aa282bcd">fresh_link</a> (const ACE_INET_Addr &amp;remote_addr, <a class="el" href="a00639.html">SimpleTcpConnection_rch</a> connection)</td></tr>

<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="a00493.html">DataLink</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#659dee90f3174fc02fea2504109f1329">find_or_create_datalink</a> (const <a class="el" href="a00749.html">TransportInterfaceInfo</a> &amp;remote_info, int connect_as_publisher)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#93b242fbd459db8812e2c93919c598d3">configure_i</a> (<a class="el" href="a00741.html">TransportConfiguration</a> *config)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#52c31fce7c3ed1fc5225fa5bb2b0c513">shutdown_i</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#b855e7ab239436c8ca2005507ae61a50">pre_shutdown_i</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#1aef29846ac5cd443c1c293a574d0386">connection_info_i</a> (<a class="el" href="a00749.html">TransportInterfaceInfo</a> &amp;local_info) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#9fc3718fa678ca47eb7b3a75b6c2e7a3">release_datalink_i</a> (<a class="el" href="a00493.html">DataLink</a> *link)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Called by the <a class="el" href="a00493.html">DataLink</a> to release itself.  <a href="#9fc3718fa678ca47eb7b3a75b6c2e7a3"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Private Types</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef ACE_Hash_Map_Manager_Ex&lt;<br>
 ACE_INET_Addr, <a class="el" href="a00639.html">SimpleTcpDataLink_rch</a>,<br>
 ACE_Hash&lt; ACE_INET_Addr &gt;,<br>
 ACE_Equal_To&lt; ACE_INET_Addr &gt;,<br>
 ACE_Null_Mutex &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#cf3f817da6d94d18e674834f1884879b">AddrLinkMap</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Map Type: (key) ACE_INET_Addr to (value) SimpleTcpDataLink_rch.  <a href="#cf3f817da6d94d18e674834f1884879b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef ACE_Hash_Map_Manager_Ex&lt;<br>
 ACE_INET_Addr, <a class="el" href="a00639.html">SimpleTcpConnection_rch</a>,<br>
 ACE_Hash&lt; ACE_INET_Addr &gt;,<br>
 ACE_Equal_To&lt; ACE_INET_Addr &gt;,<br>
 ACE_Null_Mutex &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#8e276f7a4fafdffc40328c0430d42e93">AddrConnectionMap</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Map Type: (key) ACE_INET_Addr to (value) SimpleTcpConnection_rch.  <a href="#8e276f7a4fafdffc40328c0430d42e93"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef ACE_SYNCH_MUTEX&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#48d4531c94c7ff2fb3bd5d6fc30ab2a7">LockType</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef ACE_Guard&lt; <a class="el" href="a00693.html#48d4531c94c7ff2fb3bd5d6fc30ab2a7">LockType</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#0f21d5d702370bd531d8bb2effd9a109">GuardType</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef ACE_Condition&lt; <a class="el" href="a00693.html#48d4531c94c7ff2fb3bd5d6fc30ab2a7">LockType</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#6761539582a6ebddaceddadad28102cf">ConditionType</a></td></tr>

<tr><td colspan="2"><br><h2>Private Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#930e6c9d3a2d3636e356a20a49b05939">passive_connection</a> (const ACE_INET_Addr &amp;remote_address, <a class="el" href="a00684.html">SimpleTcpConnection</a> *connection)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#3955acf80c6ce2a47b2fb3d1a8183644">make_active_connection</a> (const ACE_INET_Addr &amp;remote_address, <a class="el" href="a00686.html">SimpleTcpDataLink</a> *link)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Called by <a class="el" href="a00693.html#659dee90f3174fc02fea2504109f1329">find_or_create_datalink()</a>.  <a href="#3955acf80c6ce2a47b2fb3d1a8183644"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#2f2ffc96c44c10914b809ecf8518b0db">make_passive_connection</a> (const ACE_INET_Addr &amp;remote_address, <a class="el" href="a00686.html">SimpleTcpDataLink</a> *link)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Called by <a class="el" href="a00693.html#659dee90f3174fc02fea2504109f1329">find_or_create_datalink()</a>.  <a href="#2f2ffc96c44c10914b809ecf8518b0db"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#2d9016c970034bf860f7dd233b213c7f">connect_datalink</a> (<a class="el" href="a00686.html">SimpleTcpDataLink</a> *link, <a class="el" href="a00684.html">SimpleTcpConnection</a> *connection)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Common code used by <a class="el" href="a00693.html#3955acf80c6ce2a47b2fb3d1a8183644">make_active_connection()</a> and <a class="el" href="a00693.html#2f2ffc96c44c10914b809ecf8518b0db">make_passive_connection()</a>.  <a href="#2d9016c970034bf860f7dd233b213c7f"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Private Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00682.html">SimpleTcpAcceptor</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#dea65255b1b47fc181343d252907a2cc">acceptor_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Used to accept passive connections on our local_address_.  <a href="#dea65255b1b47fc181343d252907a2cc"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00639.html">SimpleTcpConfiguration_rch</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#2ba51ce795bfd1def857a4a1bb7742c8">tcp_config_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Our configuration object, supplied to us in config_i().  <a href="#2ba51ce795bfd1def857a4a1bb7742c8"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00693.html#cf3f817da6d94d18e674834f1884879b">AddrLinkMap</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#682425881f7c6257c5762a52205c146a">links_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This is the map of connected DataLinks.  <a href="#682425881f7c6257c5762a52205c146a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00693.html#48d4531c94c7ff2fb3bd5d6fc30ab2a7">LockType</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#ea6c0de96812176632ec71dd95a0c328">links_lock_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This lock is used to protect the links_ data member.  <a href="#ea6c0de96812176632ec71dd95a0c328"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00693.html#8e276f7a4fafdffc40328c0430d42e93">AddrConnectionMap</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#418e2f2cc3d728ea64077f9343e3d810">connections_</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00693.html#6761539582a6ebddaceddadad28102cf">ConditionType</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#ff68b84c2e689305682002bdaa5dc11f">connections_updated_</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00693.html#48d4531c94c7ff2fb3bd5d6fc30ab2a7">LockType</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#2563c0bddf2d5047cd0526ff1cea23cc">connections_lock_</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00639.html">TransportReactorTask_rch</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#20aa3bb6895f1dd0d4a926fab597cc9e">reactor_task_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">We need the reactor for our Acceptor.  <a href="#20aa3bb6895f1dd0d4a926fab597cc9e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00685.html">SimpleTcpConnectionReplaceTask</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#37107eaa0bbb10dfd724899e7024a717">con_checker_</a></td></tr>

<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#ad5f24afd33dae114c15fa3f2e0ebebb">SimpleTcpConnection</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#00466aa76375ec9983c4d71ad8cdf100">SimpleTcpDataLink</a></td></tr>

</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
This class provides the "SimpleTcp" transport specific implementation. It creates the acceptor for listening the incoming requests using TCP and maintains a collection of TCP specific connections/datalinks.<p>
Notes about object ownership: 1) Own the datalink objects, passive connection objects, acceptor object and <a class="el" href="a00685.html">SimpleTcpConnectionReplaceTask</a> object(used during reconnecting). 2) Reference to <a class="el" href="a00752.html">TransportReactorTask</a> object owned by base class. 
<p>
<hr><h2>Member Typedef Documentation</h2>
<a class="anchor" name="8e276f7a4fafdffc40328c0430d42e93"></a><!-- doxytag: member="OpenDDS::DCPS::SimpleTcpTransport::AddrConnectionMap" ref="8e276f7a4fafdffc40328c0430d42e93" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef ACE_Hash_Map_Manager_Ex&lt;ACE_INET_Addr, <a class="el" href="a00639.html">SimpleTcpConnection_rch</a>, ACE_Hash&lt;ACE_INET_Addr&gt;, ACE_Equal_To&lt;ACE_INET_Addr&gt;, ACE_Null_Mutex&gt; <a class="el" href="a00693.html#8e276f7a4fafdffc40328c0430d42e93">OpenDDS::DCPS::SimpleTcpTransport::AddrConnectionMap</a><code> [private]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Map Type: (key) ACE_INET_Addr to (value) SimpleTcpConnection_rch. 
<p>

</div>
</div><p>
<a class="anchor" name="cf3f817da6d94d18e674834f1884879b"></a><!-- doxytag: member="OpenDDS::DCPS::SimpleTcpTransport::AddrLinkMap" ref="cf3f817da6d94d18e674834f1884879b" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef ACE_Hash_Map_Manager_Ex&lt;ACE_INET_Addr, <a class="el" href="a00639.html">SimpleTcpDataLink_rch</a>, ACE_Hash&lt;ACE_INET_Addr&gt;, ACE_Equal_To&lt;ACE_INET_Addr&gt;, ACE_Null_Mutex&gt; <a class="el" href="a00693.html#cf3f817da6d94d18e674834f1884879b">OpenDDS::DCPS::SimpleTcpTransport::AddrLinkMap</a><code> [private]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Map Type: (key) ACE_INET_Addr to (value) SimpleTcpDataLink_rch. 
<p>

</div>
</div><p>
<a class="anchor" name="6761539582a6ebddaceddadad28102cf"></a><!-- doxytag: member="OpenDDS::DCPS::SimpleTcpTransport::ConditionType" ref="6761539582a6ebddaceddadad28102cf" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef ACE_Condition&lt;<a class="el" href="a00693.html#48d4531c94c7ff2fb3bd5d6fc30ab2a7">LockType</a>&gt; <a class="el" href="a00693.html#6761539582a6ebddaceddadad28102cf">OpenDDS::DCPS::SimpleTcpTransport::ConditionType</a><code> [private]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="0f21d5d702370bd531d8bb2effd9a109"></a><!-- doxytag: member="OpenDDS::DCPS::SimpleTcpTransport::GuardType" ref="0f21d5d702370bd531d8bb2effd9a109" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef ACE_Guard&lt;<a class="el" href="a00693.html#48d4531c94c7ff2fb3bd5d6fc30ab2a7">LockType</a>&gt; <a class="el" href="a00693.html#0f21d5d702370bd531d8bb2effd9a109">OpenDDS::DCPS::SimpleTcpTransport::GuardType</a><code> [private]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>
Reimplemented from <a class="el" href="a00746.html#baac0d297519eced67fc7f42b0e85961">OpenDDS::DCPS::TransportImpl</a>.
</div>
</div><p>
<a class="anchor" name="48d4531c94c7ff2fb3bd5d6fc30ab2a7"></a><!-- doxytag: member="OpenDDS::DCPS::SimpleTcpTransport::LockType" ref="48d4531c94c7ff2fb3bd5d6fc30ab2a7" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef ACE_SYNCH_MUTEX <a class="el" href="a00693.html#48d4531c94c7ff2fb3bd5d6fc30ab2a7">OpenDDS::DCPS::SimpleTcpTransport::LockType</a><code> [private]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>
Reimplemented from <a class="el" href="a00746.html#331a2a67ba6614275cc62d2b70f9ab95">OpenDDS::DCPS::TransportImpl</a>.
</div>
</div><p>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="ff39cd6babb5e36101aa411cf61f2262"></a><!-- doxytag: member="OpenDDS::DCPS::SimpleTcpTransport::SimpleTcpTransport" ref="ff39cd6babb5e36101aa411cf61f2262" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">OpenDDS::DCPS::SimpleTcpTransport::SimpleTcpTransport           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="6b39e7b61a318ac8a3c1648c0e8a2854"></a><!-- doxytag: member="OpenDDS::DCPS::SimpleTcpTransport::~SimpleTcpTransport" ref="6b39e7b61a318ac8a3c1648c0e8a2854" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">OpenDDS::DCPS::SimpleTcpTransport::~SimpleTcpTransport           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [virtual]</code></td>

⌨️ 快捷键说明

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