??xml version="1.0" encoding="utf-8" standalone="yes"?>国产在线观看免费网站,久久久久久中文字幕,欧美zzoohttp://www.aygfsteel.com/hwpok/category/49497.htmlDEBUG - 天道酬勤zh-cnFri, 21 Oct 2011 19:08:37 GMTFri, 21 Oct 2011 19:08:37 GMT60TCP一点东?/title><link>http://www.aygfsteel.com/hwpok/archive/2011/10/22/361772.html</link><dc:creator>惠万?/dc:creator><author>惠万?/author><pubDate>Fri, 21 Oct 2011 16:51:00 GMT</pubDate><guid>http://www.aygfsteel.com/hwpok/archive/2011/10/22/361772.html</guid><wfw:comment>http://www.aygfsteel.com/hwpok/comments/361772.html</wfw:comment><comments>http://www.aygfsteel.com/hwpok/archive/2011/10/22/361772.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/hwpok/comments/commentRss/361772.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/hwpok/services/trackbacks/361772.html</trackback:ping><description><![CDATA[     摘要: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->package org.upeng.mail.net.server;import java.io.BufferedReader;import java.io.Buffered...  <a href='http://www.aygfsteel.com/hwpok/archive/2011/10/22/361772.html'>阅读全文</a><img src ="http://www.aygfsteel.com/hwpok/aggbug/361772.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/hwpok/" target="_blank">惠万?/a> 2011-10-22 00:51 <a href="http://www.aygfsteel.com/hwpok/archive/2011/10/22/361772.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(?MINA2 之IoBuffer http://www.aygfsteel.com/hwpok/archive/2011/09/05/357953.html惠万?/dc:creator>惠万?/author>Sun, 04 Sep 2011 16:40:00 GMThttp://www.aygfsteel.com/hwpok/archive/2011/09/05/357953.htmlhttp://www.aygfsteel.com/hwpok/comments/357953.htmlhttp://www.aygfsteel.com/hwpok/archive/2011/09/05/357953.html#Feedback0http://www.aygfsteel.com/hwpok/comments/commentRss/357953.htmlhttp://www.aygfsteel.com/hwpok/services/trackbacks/357953.html最q做的一个项目用C(jin)开源的C/S应用的服务器框架MINAQ当初做的时候资料非常少Q只能自׃停的试QȝZ(jin)一些规律经验。从|上看的资料上看Q这个服务器框架q是比较E_和支持的q发数还是很不错的,不过...  阅读全文

]]>
(?Mina 框架ȝhttp://www.aygfsteel.com/hwpok/archive/2011/09/04/357931.html惠万?/dc:creator>惠万?/author>Sat, 03 Sep 2011 18:28:00 GMThttp://www.aygfsteel.com/hwpok/archive/2011/09/04/357931.htmlhttp://www.aygfsteel.com/hwpok/comments/357931.htmlhttp://www.aygfsteel.com/hwpok/archive/2011/09/04/357931.html#Feedback0http://www.aygfsteel.com/hwpok/comments/commentRss/357931.htmlhttp://www.aygfsteel.com/hwpok/services/trackbacks/357931.html单介l:(x)MINA框架是对java的NIO包的一个封装,化了(jin)NIOE序开发的隑ֺQ封装了(jin)很多底层的细节,然开发者把_֊集中C务逻辑上来Q最q做?jin)一个相关的目Qؓ(f)?jin)备忘对MINA做一个ȝ?/p>

下面q个startҎ(gu)用来初始化MINAQ?/p>

Java代码
  1. private void start(int port, WebContext ctx)    
  2.       throws IOException, InstantiationException   
  3.         , IllegalAccessException, ClassNotFoundException {   
  4.     //初始化Acceptor   
  5.     NioSocketAcceptor acceptor = new NioSocketAcceptor(5);   
  6.            
  7.        java.util.concurrent.Executor threadPool = Executors.newFixedThreadPool(1500);//建立U程?  
  8.        //加入qo(h)器(F(tun)ilterQ到Acceptor   
  9.        acceptor.getFilterChain().addLast("exector"new ExecutorFilter(threadPool));   
  10. acceptor.getFilterChain().addLast("codec",    
  11.        new ProtocolCodecFilter(new WebDecoder()Q?span class="keyword">new WebEncoder()));   
  12.        LoggingFilter filter = new LoggingFilter();   
  13.     filter.setExceptionCaughtLogLevel(LogLevel.DEBUG);   
  14.     filter.setMessageReceivedLogLevel(LogLevel.DEBUG);   
  15.     filter.setMessageSentLogLevel(LogLevel.DEBUG);   
  16.     filter.setSessionClosedLogLevel(LogLevel.DEBUG);   
  17.     filter.setSessionCreatedLogLevel(LogLevel.DEBUG);   
  18.     filter.setSessionIdleLogLevel(LogLevel.DEBUG);   
  19.     filter.setSessionOpenedLogLevel(LogLevel.DEBUG);   
  20.     acceptor.getFilterChain().addLast("logger", filter);    
  21.            
  22.        acceptor.setReuseAddress(true);//讄的是L务监听的端口可以重用   
  23.            
  24.        acceptor.getSessionConfig().setReuseAddress(true);//讄每一个非ȝ听连接的端口可以重用   
  25.        acceptor.getSessionConfig().setReceiveBufferSize(1024);//讄输入~冲区的大小   
  26.        acceptor.getSessionConfig().setSendBufferSize(10240);//讄输出~冲区的大小   
  27. //讄为非延迟发送,为true则不l装成大包发送,收到东西马上发出   
  28.        acceptor.getSessionConfig().setTcpNoDelay(true);   
  29. //讄L务监听端口的监听队列的最大gؓ(f)100Q如果当前已l有100个连接,再新的连接来被服务器拒l?  
  30.        acceptor.setBacklog(100);   
  31.        acceptor.setDefaultLocalAddress(new InetSocketAddress(port));   
  32.        //加入处理器(HandlerQ到Acceptor   
  33.        acceptor.setHandler(new WebHandler());   
  34.     acceptor.bind();   
  35. }  

 NioSocketAcceptor是MINA的适配器,一切都是从q里开始的。MINA中有个过滤器和处理器的概念,qo(h)器用来过滤数据,处理器用来处理数据。具体来说MINA的处理模型就是request->qo(h)器A->qo(h)器B->处理?>qo(h)器B->qo(h)器A->response,q里的request和responsecMserlvet的request和response?/p>

Java代码
  1. acceptor.getFilterChain().addLast("exector"new ExecutorFilter(threadPool));   
  2. //加入一个线E池到适配器,q里用的是jdk自带的线E池  
 
Java代码
  1.  acceptor.getFilterChain().addLast("codec",    
  2.         new ProtocolCodecFilter(new WebDecoder()Q?span class="keyword">new WebEncoder()));   
  3. //q里是处理逻辑的关键部位,h的处理都是在 WebDecodercdW(xu)ebEncodercM处理Q可以明显从命名上看出来一个是用来解码Q另一个是用来~码Qrequetq来后先q入 WebDecoderc?实现?jin)ProtocolDecoder接口)q行解码处理Q这里可以加入自q逻辑把传q来的流解码成自己需要的信息。?WebEncoderc?实现?jin)ProtocolEncoder接口)是进行编码,在这个类里面加入自己的逻辑把处理后的信息组装发送给客户?(response)。而在解码和编码过E中WebHandler(扩展?jin)IoHandlerAdapter抽象c?起到?jin)处理器的作用?  
  4. //request->WebDecoder->WebHandler->WebEncode->response  

 

现在详细描述一下request->WebDecoder->WebHandler->WebEncode->response的过E:(x)

客户端发送一个请求到MINA服务器,q里相当于来?jin)一个requet。请求首先来?/p>

Java代码
  1. WebDecoderc?实现?jin)ProtocolDecoder接口)中的    
  2. boolean decode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) throws Exception{}Ҏ(gu)   
  3. /*  
  4. 参数inQ用戯求信息全存在q里Q读数据׃inq里诅R? 
  5. 参数outQ用来输出处理后的数据到Filter的下一个过滤器Q如果没有过滤器?jin)就输出到WebHandlerQ这里有点和  
  6. servelt的过滤器cM。利用out.write(Object object);q个函数可以把数据传C一个Filter。我们可以自己定? 
  7. 一个对象,我们假设为RequestQ用它来传递消息,那末q里可以写成out.write(new RequsetMessage());  
  8. 如果q个Ҏ(gu)q回falseQ就是说当前逻辑包还没接收完Q也是当前的IoBufferq没有包含够的数据Q,需要再? 
  9. 执行decodeҎ(gu)Q再ơ获取新的IoBufferQ,用来获取_的数据。如果返回gؓ(f)truepC可以不执行decode? 
  10. 法了(jin)Q但是要ȀzhandlerҎ(gu)Q必要调用out.writeҎ(gu)? 
  11. public class RequestMessage{}//q里什么也不做  
  12. */  

 然后?/p>

Java代码
  1. WebHandler(扩展?jin)IoHandlerAdapter抽象c?中的   
  2. void messageReceived(IoSession session, Object message) throws Exception{}Ҏ(gu)   
  3. WriteFuture future = session.write(response);//session中必d入这个代码,才会(x)ȀzencodeҎ(gu)   
  4. future.addListener(IoFutureListener.CLOSE);//q个的作用是发送完毕后关闭q接Q加?jin)就是短q接Q不然是长连?  
  5. IoFutureListener里面有个operationComplete(IoFuture future)Ҏ(gu)Q当发送完成之后才调用q个Ҏ(gu)?  
  6. /*  
  7. 参数messageQ用来获取Filter传递过来的对象.对应代码RequestMessage request = (RequestMessage) message;  
  8. 参数session:用来发送数据到Filter.对应代码session.write(new ResponseMessage());  
  9. public class ResponseMessage{}//q里什么也不做,假设存放处理后的数据  
  10. 注意Q对于一个MINAE序而言Q对于WebHandlercd生成一个对象,所以要考虑U程安全问题  
  11.  */  
 

然后?/p>

Java代码
  1. WebEncoderc?实现?jin)ProtocolEncoder接口)中的   
  2. boolean encode(IoSession session, Object message, ProtocolEncoderOutput out) throws Exception{}    
  3. Ҏ(gu)   
  4. /*  
  5. 参数messageQ用来获取上一个Filter节点的数据或者处理器的数据(如果q个qo(h)器ؓ(f)最靠近处理器的那个Q? 
  6. ResponseMessage response = (ResponseMessage)message;  
  7. 参数outQ用来输出数据到下一个Filter节点q或者到客户?用out.write(Object encodedMessage)把数据发? 
  8. 出去Q但是要注意的是Q如果这个Filter下一个节点如果是客户端的话,那个q个encodedMessage数据必须? 
  9. IoBuffercd的,可以利用IoBuffer.wrap(byte[] byteArray)q个Ҏ(gu)来格式化输出数据  
  10. */  


]]>
socketPoolhttp://www.aygfsteel.com/hwpok/archive/2011/08/30/357594.html惠万?/dc:creator>惠万?/author>Tue, 30 Aug 2011 10:01:00 GMThttp://www.aygfsteel.com/hwpok/archive/2011/08/30/357594.htmlhttp://www.aygfsteel.com/hwpok/comments/357594.htmlhttp://www.aygfsteel.com/hwpok/archive/2011/08/30/357594.html#Feedback0http://www.aygfsteel.com/hwpok/comments/commentRss/357594.htmlhttp://www.aygfsteel.com/hwpok/services/trackbacks/357594.html 

package example.helloword.client;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

public class SendMsgPool
{
    
private static SendMsgPool sendMsgPool = new SendMsgPool();
    
    
private ExecutorService pool;
    
    
private SendMsgPool()
    
{
        pool 
= Executors.newFixedThreadPool(3);
    }

    
    
public static SendMsgPool getInstance()
    
{
        
return sendMsgPool;
    }

    
    
public Future<String> sendMsg(String local, int port, String msg)
    
{
        ClinetSocket clientScoket 
= ClientSocketPool.getInstance()
                .getClientSocket(local, port);
        ClientTread ct 
= new ClientTread(clientScoket, msg);
        
return pool.submit(ct);
    }

    
    
public void shutDown()
    
{
        
this.pool.shutdown();
    }

}

 



]]>
apache mina框架试http://www.aygfsteel.com/hwpok/archive/2011/08/30/357563.html惠万?/dc:creator>惠万?/author>Tue, 30 Aug 2011 05:11:00 GMThttp://www.aygfsteel.com/hwpok/archive/2011/08/30/357563.htmlhttp://www.aygfsteel.com/hwpok/comments/357563.htmlhttp://www.aygfsteel.com/hwpok/archive/2011/08/30/357563.html#Feedback1http://www.aygfsteel.com/hwpok/comments/commentRss/357563.htmlhttp://www.aygfsteel.com/hwpok/services/trackbacks/357563.htmlpackage server;import java.net.InetSocketAddress;import org.apache.mina.core...  阅读全文

]]>
jboss netty 框架试http://www.aygfsteel.com/hwpok/archive/2011/08/30/357562.html惠万?/dc:creator>惠万?/author>Tue, 30 Aug 2011 05:07:00 GMThttp://www.aygfsteel.com/hwpok/archive/2011/08/30/357562.htmlhttp://www.aygfsteel.com/hwpok/comments/357562.htmlhttp://www.aygfsteel.com/hwpok/archive/2011/08/30/357562.html#Feedback0http://www.aygfsteel.com/hwpok/comments/commentRss/357562.htmlhttp://www.aygfsteel.com/hwpok/services/trackbacks/357562.htmlpackage example.helloword.server;import java.net.InetSocketAddress;import ja...  阅读全文

]]>
java 单socket 通信http://www.aygfsteel.com/hwpok/archive/2011/08/26/357328.html惠万?/dc:creator>惠万?/author>Fri, 26 Aug 2011 02:28:00 GMThttp://www.aygfsteel.com/hwpok/archive/2011/08/26/357328.htmlhttp://www.aygfsteel.com/hwpok/comments/357328.htmlhttp://www.aygfsteel.com/hwpok/archive/2011/08/26/357328.html#Feedback0http://www.aygfsteel.com/hwpok/comments/commentRss/357328.htmlhttp://www.aygfsteel.com/hwpok/services/trackbacks/357328.htmlpackage sterning;import java.io.BufferedReader;import java.io.IOException;import...  阅读全文

]]>
[转]JAVA-用HttpClient来模拟浏览器GET,POST http://www.aygfsteel.com/hwpok/archive/2011/08/24/357152.html惠万?/dc:creator>惠万?/author>Tue, 23 Aug 2011 16:08:00 GMThttp://www.aygfsteel.com/hwpok/archive/2011/08/24/357152.htmlhttp://www.aygfsteel.com/hwpok/comments/357152.htmlhttp://www.aygfsteel.com/hwpok/archive/2011/08/24/357152.html#Feedback0http://www.aygfsteel.com/hwpok/comments/commentRss/357152.htmlhttp://www.aygfsteel.com/hwpok/services/trackbacks/357152.html阅读全文

]]>
UDPhttp://www.aygfsteel.com/hwpok/archive/2010/12/25/341528.html惠万?/dc:creator>惠万?/author>Sat, 25 Dec 2010 12:46:00 GMThttp://www.aygfsteel.com/hwpok/archive/2010/12/25/341528.htmlhttp://www.aygfsteel.com/hwpok/comments/341528.htmlhttp://www.aygfsteel.com/hwpok/archive/2010/12/25/341528.html#Feedback0http://www.aygfsteel.com/hwpok/comments/commentRss/341528.htmlhttp://www.aygfsteel.com/hwpok/services/trackbacks/341528.html 

while (true)
        {
            try
            {
                
// 接收数据
                datagramSocket.receive(datagramPacket);
                String instruction 
= new String(datagramPacket.getData(), 0, datagramPacket.getLength());
                
                System.out.println(instruction);
                
                String senddStr 
= "from remote server: " + instruction;
                
                System.out.println("datagramPacket
-port: " + datagramPacket.getPort());
                System.out.println("datagramPacket
-addr: " + datagramPacket.getAddress().getHostAddress());
                
                this.send(datagramPacket.getAddress().getHostAddress(), datagramPacket.getPort(), senddStr);
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
        }


]]>
java 得到本机所有iphttp://www.aygfsteel.com/hwpok/archive/2010/12/01/339464.html惠万?/dc:creator>惠万?/author>Wed, 01 Dec 2010 00:44:00 GMThttp://www.aygfsteel.com/hwpok/archive/2010/12/01/339464.htmlhttp://www.aygfsteel.com/hwpok/comments/339464.htmlhttp://www.aygfsteel.com/hwpok/archive/2010/12/01/339464.html#Feedback0http://www.aygfsteel.com/hwpok/comments/commentRss/339464.htmlhttp://www.aygfsteel.com/hwpok/services/trackbacks/339464.html 

public static String[] getAllLocalHostIP()
    
{
        String[] ret 
= null;
        
try
        
{
            String hostName 
= InetAddress.getLocalHost().getHostName();
            
if (hostName == null || hostName.length() < 1)
            
{
                
return ret;
            }

            InetAddress[] inetAddresses 
= InetAddress.getAllByName(hostName);
            
if (inetAddresses == null || inetAddresses.length < 1)
            
{
                
return ret;
            }

            
            ret 
= new String[inetAddresses.length];
            
for (int i = 0; i < inetAddresses.length; i++)
            
{
                ret[i] 
= inetAddresses[i].getHostAddress();
                
            }

        }

        
catch (Exception ex)
        
{
            ex.printStackTrace();
        }

        
return ret;
    }


]]>
վ֩ģ壺 | Թ| Դ| ɽ| | üɽ| ʼ| | ɽ| | ϴ| Ҧ| ʳ| | | Խ| ɽ| | ³| ̨| | | | | ۲| ̩| ض| ֶ| | | DZɽ| | | | ׶| ɽ| | | ̶| Զ| ƽ|