??xml version="1.0" encoding="utf-8" standalone="yes"?>午夜私人影院久久久久,亚洲免费av片,成人系列视频http://www.aygfsteel.com/hankchen/category/41480.html把工作当事业做,把项目当作品做!zh-cnMon, 09 Apr 2012 20:57:45 GMTMon, 09 Apr 2012 20:57:45 GMT60Netty长连接的事g处理序问题http://www.aygfsteel.com/hankchen/archive/2012/04/08/373572.htmlhankchenhankchenSun, 08 Apr 2012 04:32:00 GMThttp://www.aygfsteel.com/hankchen/archive/2012/04/08/373572.htmlhttp://www.aygfsteel.com/hankchen/comments/373572.htmlhttp://www.aygfsteel.com/hankchen/archive/2012/04/08/373572.html#Feedback0http://www.aygfsteel.com/hankchen/comments/commentRss/373572.htmlhttp://www.aygfsteel.com/hankchen/services/trackbacks/373572.html最q的一个线上项目(认证服务器)(j)老是出现服务延迟的情c(din)具体的问题描述Q?/p>

Q?Q客L(fng)发送一个请求AQ长q接Q,在服务器端的业务层需?0U以上才能接收到?/p>

Q?Q客L(fng)发送一个请求BQ端q接Q,在服务器端的业务层可以迅速接收到?/p>

从现象大致知道问题出在服务器端的|络接收层,大量通过长连接发送过来的h都堵塞在|络层得不到处理Q在|络层排队,q没到应用层Q?/p>

Q友情提C:(x)本博文章Ƣ迎转蝲Q但h明出处:(x)hankchenQ?a href="http://www.aygfsteel.com/hankchen">http://www.aygfsteel.com/hankchenQ?/strong>

 

后来l过排查Q发现是Netty中的OrderedMemoryAwareThreadPoolExecutor原因。相关代码如下:(x)

MemoryAwareThreadPoolExecutor executor = new OrderedMemoryAwareThreadPoolExecutor(threadNums, maxChannelMemorySize,
                                                                                                        maxTotalMemorySize, keepAliveTime,
                                                                                                        TimeUnit.SECONDS);
ExecutionHandler executionHandler = new ExecutionHandler(executor);

public ChannelPipeline getPipeline() throws Exception
{
        ChannelPipeline pipeline = pipeline();
        pipeline.addLast("decoder", new AuthDecoder());
        pipeline.addLast("encoder", new AuthEncoder());
        pipeline.addLast("executor", executionHandler);
        pipeline.addLast("handler", new AuthServerHandler(commandFactory));
        return pipeline;
}

 

先介l下背景知识Q再来分析问题?/p>

大家都知道,Netty是一个基于事件的NIO框架。在Netty中,一切网l动作都是通过事g来传播ƈ处理的,例如QChannel诅RChannel写等{。回忆下Netty的流处理模型Q?/p>

BossU程Q一个服务器端口对于一个)(j)---接收到客L(fng)q接---生成Channel---交给WorkU程池(多个WorkU程Q来处理?/strong>

具体的WorkU程---d已接收的数据到ChannelBuffer---触发ChannelPipeline中的ChannelHandler链来处理业务逻辑?/strong>

注意Q执行ChannelHandler铄整个q程是同步的Q如果业务逻辑的耗时较长Q会(x)导致WorkU程长时间被占用得不到释放,从而媄(jing)响了整个服务器的q发处理能力?/p>

所以,Z提高q发敎ͼ一般通过ExecutionHandlerU程池来异步处理ChannelHandler链(workerU程在经qExecutionHandler后就l束了,它会(x)被ChannelFactory的workerU程池所回收Q。在Netty中,只需要增加一行代码:(x)

public ChannelPipeline getPipeline() {
         return Channels.pipeline(
                 new DatabaseGatewayProtocolEncoder(),
                 new DatabaseGatewayProtocolDecoder(),
                 executionHandler, // Must be shared
                 new DatabaseQueryingHandler());
}
例如Q?/pre>
ExecutionHandler executionHandler = new ExecutionHandler(
             new OrderedMemoryAwareThreadPoolExecutor(16, 1048576, 1048576))

 

对于ExecutionHandler需要的U程池模型,Netty提供了两U可选:(x)

1Q?MemoryAwareThreadPoolExecutor 通过对线E池内存的用控Ӟ可控制Executor中待处理d的上限(过上限Ӟ后箋q来的Q务将被阻塞)(j)Qƈ可控制单个Channel待处理Q务的上限Q防止内存溢出错误;

2Q?OrderedMemoryAwareThreadPoolExecutor ?MemoryAwareThreadPoolExecutor 的子cR除了MemoryAwareThreadPoolExecutor 的功能之外,它还可以保证同一Channel中处理的事g的序性,q主要是控制事g在异步处理模式下可能出现的错误的事g序Q但它ƈ不保证同一Channel中的事g都在一个线E中执行Q通常也没必要Q?

例如Q?pre>Thread X: --- Channel A (Event A1) --. .-- Channel B (Event B2) --- Channel B (Event B3) ---> \ / X / \ Thread Y: --- Channel B (Event B1) --' '-- Channel A (Event A2) --- Channel A (Event A3) --->

上图表达的意思有几个Q?

Q?Q对整个U程池而言Q处理同一个Channel的事Ӟ必须是按照顺序来处理的。例如,必须先处理完Channel A (Event A1) Q再处理Channel A (Event A2)、Channel A (Event A3)

Q?Q同一个Channel的多个事Ӟ?x)分布到U程池的多个U程中去处理?

Q?Q不同Channel的事件可以同时处理(分担到多个线E)(j)Q互不媄(jing)响?nbsp; 

OrderedMemoryAwareThreadPoolExecutor 的这U事件处理有序性是有意义的Q因为通常情况下,h发送端希望服务器能够按照顺序处理自qhQ特别是需要多ơ握手的应用层协议。例如:(x)XMPP协议?

 

现在回到具体业务上来Q我们这里的认证服务也用了OrderedMemoryAwareThreadPoolExecutor。认证服务的其中一个环节是使用长连接,不断处理来自另外一个服务器的认证请求。通信的数据包都很,一般都?00个字节以内。一般情况下Q处理这个过E很快,所以没有什么问题。但是,׃认证服务需要调用第三方的接口,如果W三Ҏ(gu)口出现gq,导致这个过E变慢。一旦一个事件处理不完,׃要保持事件处理的有序性,其他事g全部堵塞了Q而短q接之所以没有问题,是因为短q接一个Channel׃个请求数据包Q处理完Channel关闭了Q根本不存在序的问题,所以在业务层可以迅速收到请求,只是׃同样的原因(W三Ҏ(gu)口)(j)Q处理时间会(x)比较ѝ?

其实Q认证过E都是独立的h数据包(单个帐号Q,每个h数据包之间是没有M关系的,保持q样的顺序没有意义!

 

最后的改进措施Q?

1、去掉OrderedMemoryAwareThreadPoolExecutorQ改用MemoryAwareThreadPoolExecutor?

2、减调用第三方接口的超时时_(d)让处理线E尽早回归线E池?

Q友情提C:(x)本博文章Ƣ迎转蝲Q但h明出处:(x)hankchenQ?a href="http://www.aygfsteel.com/hankchen">http://www.aygfsteel.com/hankchenQ?/strong>



hankchen 2012-04-08 12:32 发表评论
]]>
使用Netty实现通用二进制协议的高效数据传输http://www.aygfsteel.com/hankchen/archive/2012/02/04/369378.htmlhankchenhankchenSat, 04 Feb 2012 08:33:00 GMThttp://www.aygfsteel.com/hankchen/archive/2012/02/04/369378.htmlhttp://www.aygfsteel.com/hankchen/comments/369378.htmlhttp://www.aygfsteel.com/hankchen/archive/2012/02/04/369378.html#Feedback1http://www.aygfsteel.com/hankchen/comments/commentRss/369378.htmlhttp://www.aygfsteel.com/hankchen/services/trackbacks/369378.html阅读全文

hankchen 2012-02-04 16:33 发表评论
]]>
利用httpclient模拟站点的登录发帖回?/title><link>http://www.aygfsteel.com/hankchen/archive/2009/09/17/295398.html</link><dc:creator>hankchen</dc:creator><author>hankchen</author><pubDate>Thu, 17 Sep 2009 00:42:00 GMT</pubDate><guid>http://www.aygfsteel.com/hankchen/archive/2009/09/17/295398.html</guid><wfw:comment>http://www.aygfsteel.com/hankchen/comments/295398.html</wfw:comment><comments>http://www.aygfsteel.com/hankchen/archive/2009/09/17/295398.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.aygfsteel.com/hankchen/comments/commentRss/295398.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/hankchen/services/trackbacks/295398.html</trackback:ping><description><![CDATA[     摘要:    本文采用 HttpClient 来模拟站点的d发帖回复Q介l?HttpClient 的用法和常见问题的解x案? HttpClient ?Apache Jakarta Common 下的子项目,可以用来提供支持 HTTP 协议的客L(fng)~程工具包,模拟览器的行ؓ(f)。它提供了很多的Ҏ(gu)来简化网l的讉KQ虽然大部分的功能可以用较底层?java.net.HttpURLC...  <a href='http://www.aygfsteel.com/hankchen/archive/2009/09/17/295398.html'>阅读全文</a><img src ="http://www.aygfsteel.com/hankchen/aggbug/295398.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/hankchen/" target="_blank">hankchen</a> 2009-09-17 08:42 <a href="http://www.aygfsteel.com/hankchen/archive/2009/09/17/295398.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>实现单的多线EHTTP服务?/title><link>http://www.aygfsteel.com/hankchen/archive/2009/09/15/295130.html</link><dc:creator>hankchen</dc:creator><author>hankchen</author><pubDate>Tue, 15 Sep 2009 04:36:00 GMT</pubDate><guid>http://www.aygfsteel.com/hankchen/archive/2009/09/15/295130.html</guid><wfw:comment>http://www.aygfsteel.com/hankchen/comments/295130.html</wfw:comment><comments>http://www.aygfsteel.com/hankchen/archive/2009/09/15/295130.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/hankchen/comments/commentRss/295130.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/hankchen/services/trackbacks/295130.html</trackback:ping><description><![CDATA[    本文实现了一?font style="background-color: #cce8cf">单的多线EHTTP服务?/font>。接收HTTP GEThQ然后返回简单的文本信息?br />     后期?x)丰富这个服务器Q实现更多的功能Q例如:(x)<br /> 1. 支持POST方式提交<br /> 2. 支持二进制的传?br /> 3. 支持U程池处?br /> 4. 采用NIO非阻塞Ş式实?br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080"> 1</span><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">package</span><span style="color: #000000"> thread;<br /> </span><span style="color: #008080"> 2</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /> </span><span style="color: #008080"> 3</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> java.io.BufferedReader;<br /> </span><span style="color: #008080"> 4</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> java.io.IOException;<br /> </span><span style="color: #008080"> 5</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> java.io.InputStream;<br /> </span><span style="color: #008080"> 6</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> java.io.InputStreamReader;<br /> </span><span style="color: #008080"> 7</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> java.io.OutputStream;<br /> </span><span style="color: #008080"> 8</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> java.io.PrintWriter;<br /> </span><span style="color: #008080"> 9</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> java.net.ServerSocket;<br /> </span><span style="color: #008080">10</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> java.net.Socket;<br /> </span><span style="color: #008080">11</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /> </span><span style="color: #008080">12</span><span style="color: #000000"><img id="Codehighlighter1_250_324_Open_Image" onclick="this.style.display='none'; Codehighlighter1_250_324_Open_Text.style.display='none'; Codehighlighter1_250_324_Closed_Image.style.display='inline'; Codehighlighter1_250_324_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_250_324_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_250_324_Closed_Text.style.display='none'; Codehighlighter1_250_324_Open_Image.style.display='inline'; Codehighlighter1_250_324_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_250_324_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/** */</span><span id="Codehighlighter1_250_324_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br /> </span><span style="color: #008080">13</span><span style="color: #008000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" /> *  Copyright (C): 2009<br /> </span><span style="color: #008080">14</span><span style="color: #008000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" /> *  </span><span style="color: #808080">@author</span><span style="color: #008000"> 陈新?br /> </span><span style="color: #008080">15</span><span style="color: #008000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" /> *  Jun 27, 2009 2:39:39 PM<br /> </span><span style="color: #008080">16</span><span style="color: #008000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /> </span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /> </span><span style="color: #008080">17</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /> </span><span style="color: #008080">18</span><span style="color: #000000"><img id="Codehighlighter1_327_401_Open_Image" onclick="this.style.display='none'; Codehighlighter1_327_401_Open_Text.style.display='none'; Codehighlighter1_327_401_Closed_Image.style.display='inline'; Codehighlighter1_327_401_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_327_401_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_327_401_Closed_Text.style.display='none'; Codehighlighter1_327_401_Open_Image.style.display='inline'; Codehighlighter1_327_401_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_327_401_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/** */</span><span id="Codehighlighter1_327_401_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br /> </span><span style="color: #008080">19</span><span style="color: #008000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" /> * Threaded Network Server<br /> </span><span style="color: #008080">20</span><span style="color: #008000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" /> * q是一个简单的多线EHTTP服务?br /> </span><span style="color: #008080">21</span><span style="color: #008000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" /> * 采用多线E来处理高ƈ发的用户h<br /> </span><span style="color: #008080">22</span><span style="color: #008000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /> </span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /> </span><span style="color: #008080">23</span><span style="color: #000000"><img id="Codehighlighter1_427_2135_Open_Image" onclick="this.style.display='none'; Codehighlighter1_427_2135_Open_Text.style.display='none'; Codehighlighter1_427_2135_Closed_Image.style.display='inline'; Codehighlighter1_427_2135_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_427_2135_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_427_2135_Closed_Text.style.display='none'; Codehighlighter1_427_2135_Open_Image.style.display='inline'; Codehighlighter1_427_2135_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> HttpServer </span><span id="Codehighlighter1_427_2135_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_427_2135_Open_Text"><span style="color: #000000">{<br /> </span><span style="color: #008080">24</span><span style="color: #000000"><img id="Codehighlighter1_469_789_Open_Image" onclick="this.style.display='none'; Codehighlighter1_469_789_Open_Text.style.display='none'; Codehighlighter1_469_789_Closed_Image.style.display='inline'; Codehighlighter1_469_789_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_469_789_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_469_789_Closed_Text.style.display='none'; Codehighlighter1_469_789_Open_Image.style.display='inline'; Codehighlighter1_469_789_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> main(String [] args)</span><span id="Codehighlighter1_469_789_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_469_789_Open_Text"><span style="color: #000000">{<br /> </span><span style="color: #008080">25</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        HttpServer hs</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000"> HttpServer();<br /> </span><span style="color: #008080">26</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: #0000ff">int</span><span style="color: #000000"> i</span><span style="color: #000000">=</span><span style="color: #000000">1</span><span style="color: #000000">, port</span><span style="color: #000000">=</span><span style="color: #000000">8888</span><span style="color: #000000">;<br /> </span><span style="color: #008080">27</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        Socket received</span><span style="color: #000000">=</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br /> </span><span style="color: #008080">28</span><span style="color: #000000"><img id="Codehighlighter1_556_737_Open_Image" onclick="this.style.display='none'; Codehighlighter1_556_737_Open_Text.style.display='none'; Codehighlighter1_556_737_Closed_Image.style.display='inline'; Codehighlighter1_556_737_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_556_737_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_556_737_Closed_Text.style.display='none'; Codehighlighter1_556_737_Open_Image.style.display='inline'; Codehighlighter1_556_737_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="color: #0000ff">try</span><span id="Codehighlighter1_556_737_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_556_737_Open_Text"><span style="color: #000000">{<br /> </span><span style="color: #008080">29</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />            ServerSocket server</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000"> ServerSocket(port);<br /> </span><span style="color: #008080">30</span><span style="color: #000000"><img id="Codehighlighter1_619_733_Open_Image" onclick="this.style.display='none'; Codehighlighter1_619_733_Open_Text.style.display='none'; Codehighlighter1_619_733_Closed_Image.style.display='inline'; Codehighlighter1_619_733_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_619_733_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_619_733_Closed_Text.style.display='none'; Codehighlighter1_619_733_Open_Image.style.display='inline'; Codehighlighter1_619_733_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span><span style="color: #0000ff">while</span><span style="color: #000000">(</span><span style="color: #0000ff">true</span><span style="color: #000000">)</span><span id="Codehighlighter1_619_733_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_619_733_Open_Text"><span style="color: #000000">{<br /> </span><span style="color: #008080">31</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />                received</span><span style="color: #000000">=</span><span style="color: #000000">server.accept();<br /> </span><span style="color: #008080">32</span><span style="color: #000000"><img id="Codehighlighter1_673_728_Open_Image" onclick="this.style.display='none'; Codehighlighter1_673_728_Open_Text.style.display='none'; Codehighlighter1_673_728_Closed_Image.style.display='inline'; Codehighlighter1_673_728_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_673_728_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_673_728_Closed_Text.style.display='none'; Codehighlighter1_673_728_Open_Image.style.display='inline'; Codehighlighter1_673_728_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />                </span><span style="color: #0000ff">if</span><span style="color: #000000">(received</span><span style="color: #000000">!=</span><span style="color: #0000ff">null</span><span style="color: #000000">)</span><span id="Codehighlighter1_673_728_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_673_728_Open_Text"><span style="color: #000000">{<br /> </span><span style="color: #008080">33</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />                    hs.</span><span style="color: #0000ff">new</span><span style="color: #000000"> ProcessThread(i</span><span style="color: #000000">++</span><span style="color: #000000">,received).start();<br /> </span><span style="color: #008080">34</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />                }</span></span><span style="color: #000000"><br /> </span><span style="color: #008080">35</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />            }</span></span><span style="color: #000000"><br /> </span><span style="color: #008080">36</span><span style="color: #000000"><img id="Codehighlighter1_758_786_Open_Image" onclick="this.style.display='none'; Codehighlighter1_758_786_Open_Text.style.display='none'; Codehighlighter1_758_786_Closed_Image.style.display='inline'; Codehighlighter1_758_786_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_758_786_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_758_786_Closed_Text.style.display='none'; Codehighlighter1_758_786_Open_Image.style.display='inline'; Codehighlighter1_758_786_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        }</span></span><span style="color: #0000ff">catch</span><span style="color: #000000">(IOException e)</span><span id="Codehighlighter1_758_786_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_758_786_Open_Text"><span style="color: #000000">{<br /> </span><span style="color: #008080">37</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />            e.printStackTrace();<br /> </span><span style="color: #008080">38</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="color: #000000"><br /> </span><span style="color: #008080">39</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="color: #000000"><br /> </span><span style="color: #008080">40</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    <br /> </span><span style="color: #008080">41</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="color: #0000ff">class</span><span style="color: #000000"> ProcessThread </span><span style="color: #0000ff">extends</span><span style="color: #000000"> Thread<br /> </span><span style="color: #008080">42</span><span style="color: #000000"><img id="Codehighlighter1_830_2133_Open_Image" onclick="this.style.display='none'; Codehighlighter1_830_2133_Open_Text.style.display='none'; Codehighlighter1_830_2133_Closed_Image.style.display='inline'; Codehighlighter1_830_2133_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_830_2133_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_830_2133_Closed_Text.style.display='none'; Codehighlighter1_830_2133_Open_Image.style.display='inline'; Codehighlighter1_830_2133_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_830_2133_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_830_2133_Open_Text"><span style="color: #000000">{<br /> </span><span style="color: #008080">43</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: #0000ff">private</span><span style="color: #000000"> </span><span style="color: #0000ff">int</span><span style="color: #000000"> thread_number</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;<br /> </span><span style="color: #008080">44</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: #0000ff">private</span><span style="color: #000000"> Socket received</span><span style="color: #000000">=</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br /> </span><span style="color: #008080">45</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        <br /> </span><span style="color: #008080">46</span><span style="color: #000000"><img id="Codehighlighter1_957_1041_Open_Image" onclick="this.style.display='none'; Codehighlighter1_957_1041_Open_Text.style.display='none'; Codehighlighter1_957_1041_Closed_Image.style.display='inline'; Codehighlighter1_957_1041_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_957_1041_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_957_1041_Closed_Text.style.display='none'; Codehighlighter1_957_1041_Open_Image.style.display='inline'; Codehighlighter1_957_1041_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="color: #0000ff">public</span><span style="color: #000000"> ProcessThread(</span><span style="color: #0000ff">int</span><span style="color: #000000"> thread_number, Socket received) </span><span id="Codehighlighter1_957_1041_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_957_1041_Open_Text"><span style="color: #000000">{<br /> </span><span style="color: #008080">47</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="color: #0000ff">super</span><span style="color: #000000">();<br /> </span><span style="color: #008080">48</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="color: #0000ff">this</span><span style="color: #000000">.thread_number </span><span style="color: #000000">=</span><span style="color: #000000"> thread_number;<br /> </span><span style="color: #008080">49</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="color: #0000ff">this</span><span style="color: #000000">.received </span><span style="color: #000000">=</span><span style="color: #000000"> received;<br /> </span><span style="color: #008080">50</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="color: #000000"><br /> </span><span style="color: #008080">51</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /> </span><span style="color: #008080">52</span><span style="color: #000000"><img id="Codehighlighter1_1064_2130_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1064_2130_Open_Text.style.display='none'; Codehighlighter1_1064_2130_Closed_Image.style.display='inline'; Codehighlighter1_1064_2130_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1064_2130_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1064_2130_Closed_Text.style.display='none'; Codehighlighter1_1064_2130_Open_Image.style.display='inline'; Codehighlighter1_1064_2130_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> run() </span><span id="Codehighlighter1_1064_2130_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_1064_2130_Open_Text"><span style="color: #000000">{<br /> </span><span style="color: #008080">53</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />            System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">W?/span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">thread_number</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">个处理线E启动了……</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> </span><span style="color: #008080">54</span><span style="color: #000000"><img id="Codehighlighter1_1142_2126_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1142_2126_Open_Text.style.display='none'; Codehighlighter1_1142_2126_Closed_Image.style.display='inline'; Codehighlighter1_1142_2126_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1142_2126_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1142_2126_Closed_Text.style.display='none'; Codehighlighter1_1142_2126_Open_Image.style.display='inline'; Codehighlighter1_1142_2126_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span><span style="color: #0000ff">if</span><span style="color: #000000">(received</span><span style="color: #000000">!=</span><span style="color: #0000ff">null</span><span style="color: #000000">)</span><span id="Codehighlighter1_1142_2126_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_1142_2126_Open_Text"><span style="color: #000000">{<br /> </span><span style="color: #008080">55</span><span style="color: #000000"><img id="Codehighlighter1_1151_1958_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1151_1958_Open_Text.style.display='none'; Codehighlighter1_1151_1958_Closed_Image.style.display='inline'; Codehighlighter1_1151_1958_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1151_1958_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1151_1958_Closed_Text.style.display='none'; Codehighlighter1_1151_1958_Open_Image.style.display='inline'; Codehighlighter1_1151_1958_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />                </span><span style="color: #0000ff">try</span><span id="Codehighlighter1_1151_1958_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_1151_1958_Open_Text"><span style="color: #000000">{<br /> </span><span style="color: #008080">56</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />                    System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">q接用户的地址Q?/span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">received.getInetAddress().getHostAddress());<br /> </span><span style="color: #008080">57</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />                    InputStream in</span><span style="color: #000000">=</span><span style="color: #000000">received.getInputStream();<br /> </span><span style="color: #008080">58</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />                    BufferedReader d</span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> BufferedReader(</span><span style="color: #0000ff">new</span><span style="color: #000000"> InputStreamReader(in));<br /> </span><span style="color: #008080">59</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />                    String result</span><span style="color: #000000">=</span><span style="color: #000000">d.readLine();<br /> </span><span style="color: #008080">60</span><span style="color: #000000"><img id="Codehighlighter1_1429_1497_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1429_1497_Open_Text.style.display='none'; Codehighlighter1_1429_1497_Closed_Image.style.display='inline'; Codehighlighter1_1429_1497_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1429_1497_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1429_1497_Closed_Text.style.display='none'; Codehighlighter1_1429_1497_Open_Image.style.display='inline'; Codehighlighter1_1429_1497_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />                    </span><span style="color: #0000ff">while</span><span style="color: #000000">(result</span><span style="color: #000000">!=</span><span style="color: #0000ff">null</span><span style="color: #000000"> </span><span style="color: #000000">&&</span><span style="color: #000000"> </span><span style="color: #000000">!</span><span style="color: #000000">result.equals(</span><span style="color: #000000">""</span><span style="color: #000000">))</span><span id="Codehighlighter1_1429_1497_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_1429_1497_Open_Text"><span style="color: #000000">{<br /> </span><span style="color: #008080">61</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />                        System.out.println(result);<br /> </span><span style="color: #008080">62</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />                        result</span><span style="color: #000000">=</span><span style="color: #000000">d.readLine();<br /> </span><span style="color: #008080">63</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />                    }</span></span><span style="color: #000000"><br /> </span><span style="color: #008080">64</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />                    OutputStream out</span><span style="color: #000000">=</span><span style="color: #000000">received.getOutputStream();<br /> </span><span style="color: #008080">65</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />                    PrintWriter outstream</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000"> PrintWriter(out,</span><span style="color: #0000ff">true</span><span style="color: #000000">);<br /> </span><span style="color: #008080">66</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />                    String msg1</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000"><html><head><title></title></head><body><h1>收到Q?lt;/h1></body></html></span><span style="color: #000000">"</span><span style="color: #000000">;<br /> </span><span style="color: #008080">67</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />                    outstream.println(</span><span style="color: #000000">"</span><span style="color: #000000">HTTP/1.0 200 OK</span><span style="color: #000000">"</span><span style="color: #000000">);</span><span style="color: #008000">//</span><span style="color: #008000">q回应答消息,q结束应{?/span><span style="color: #008000"><br /> </span><span style="color: #008080">68</span><span style="color: #008000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">                    outstream.println(</span><span style="color: #000000">"</span><span style="color: #000000">Content-Type:text/html;charset=GBK</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> </span><span style="color: #008080">69</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />                    outstream.println();</span><span style="color: #008000">//</span><span style="color: #008000"> Ҏ(gu) HTTP 协议, I结束头信息</span><span style="color: #008000"><br /> </span><span style="color: #008080">70</span><span style="color: #008000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">                    outstream.println(msg1);<br /> </span><span style="color: #008080">71</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />                    outstream.flush();<br /> </span><span style="color: #008080">72</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />                    outstream.close();<br /> </span><span style="color: #008080">73</span><span style="color: #000000"><img id="Codehighlighter1_1979_2011_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1979_2011_Open_Text.style.display='none'; Codehighlighter1_1979_2011_Closed_Image.style.display='inline'; Codehighlighter1_1979_2011_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1979_2011_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1979_2011_Closed_Text.style.display='none'; Codehighlighter1_1979_2011_Open_Image.style.display='inline'; Codehighlighter1_1979_2011_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />                }</span></span><span style="color: #0000ff">catch</span><span style="color: #000000">(IOException e)</span><span id="Codehighlighter1_1979_2011_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_1979_2011_Open_Text"><span style="color: #000000">{<br /> </span><span style="color: #008080">74</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />                    e.printStackTrace();<br /> </span><span style="color: #008080">75</span><span style="color: #000000"><img id="Codehighlighter1_2019_2121_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2019_2121_Open_Text.style.display='none'; Codehighlighter1_2019_2121_Closed_Image.style.display='inline'; Codehighlighter1_2019_2121_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_2019_2121_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_2019_2121_Closed_Text.style.display='none'; Codehighlighter1_2019_2121_Open_Image.style.display='inline'; Codehighlighter1_2019_2121_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />                }</span></span><span style="color: #0000ff">finally</span><span id="Codehighlighter1_2019_2121_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_2019_2121_Open_Text"><span style="color: #000000">{<br /> </span><span style="color: #008080">76</span><span style="color: #000000"><img id="Codehighlighter1_2029_2060_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2029_2060_Open_Text.style.display='none'; Codehighlighter1_2029_2060_Closed_Image.style.display='inline'; Codehighlighter1_2029_2060_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_2029_2060_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_2029_2060_Closed_Text.style.display='none'; Codehighlighter1_2029_2060_Open_Image.style.display='inline'; Codehighlighter1_2029_2060_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />                    </span><span style="color: #0000ff">try</span><span id="Codehighlighter1_2029_2060_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_2029_2060_Open_Text"><span style="color: #000000">{<br /> </span><span style="color: #008080">77</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />                        received.close();<br /> </span><span style="color: #008080">78</span><span style="color: #000000"><img id="Codehighlighter1_2081_2115_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2081_2115_Open_Text.style.display='none'; Codehighlighter1_2081_2115_Closed_Image.style.display='inline'; Codehighlighter1_2081_2115_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_2081_2115_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_2081_2115_Closed_Text.style.display='none'; Codehighlighter1_2081_2115_Open_Image.style.display='inline'; Codehighlighter1_2081_2115_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />                    }</span></span><span style="color: #0000ff">catch</span><span style="color: #000000">(IOException e)</span><span id="Codehighlighter1_2081_2115_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_2081_2115_Open_Text"><span style="color: #000000">{<br /> </span><span style="color: #008080">79</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />                        e.printStackTrace();<br /> </span><span style="color: #008080">80</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />                    }</span></span><span style="color: #000000"><br /> </span><span style="color: #008080">81</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />                }</span></span><span style="color: #000000"><br /> </span><span style="color: #008080">82</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />            }</span></span><span style="color: #000000"><br /> </span><span style="color: #008080">83</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="color: #000000"><br /> </span><span style="color: #008080">84</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="color: #000000"><br /> </span><span style="color: #008080">85</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br /> </span><span style="color: #008080">86</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span></div> <br />     q行q个E序启动服务器,然后在浏览器地址栏输入:(x)<font style="background-color: #cce8cf"><a href="http://localhost:8888/">http://localhost:8888/</a></font>Q即可看到返回结果?br /> <br />     友情提醒Q本博文章欢q{载,但请注明出处Q?a href="http://www.aygfsteel.com/hankchen">陈新?/a> <img src ="http://www.aygfsteel.com/hankchen/aggbug/295130.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/hankchen/" target="_blank">hankchen</a> 2009-09-15 12:36 <a href="http://www.aygfsteel.com/hankchen/archive/2009/09/15/295130.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank">Ұ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">踽</a>| <a href="http://" target="_blank">ʯ</a>| <a href="http://" target="_blank">Ƽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank">ν</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ѽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɳ</a>| <a href="http://" target="_blank">ľ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">˶</a>| <a href="http://" target="_blank">½</a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank">ԭ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Դ</a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʯ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>