当前位置: 首页 > news >正文

全国建设部官方网站/关键词语有哪些

全国建设部官方网站,关键词语有哪些,万州建网站,网站建设都有什么功能Grizzly开发Echoserver实战作者:chszs,转载需注明。博客主页:http://blog.csdn.net/chszs用Java编写可伸缩的server应用是有难度的。用Java NIO开发、线程管理、为成千上万的用户做server扩展。这些都是难点。Grizzly NIO框架的设计目标就是帮…

Grizzly开发Echoserver实战

作者:chszs,转载需注明。

博客主页:http://blog.csdn.net/chszs

用Java编写可伸缩的server应用是有难度的。用Java NIO开发、线程管理、为成千上万的用户做server扩展。这些都是难点。Grizzly NIO框架的设计目标就是帮助开发人员非常好地利用Java NIO API。编写出高可扩展性的、功能强大的server,并提高了扩展的框架组件:Web Framework(HTTP/S)、WebSocket、Comet等。

Grizzly 2.3开发Echoserver/client的样例

1、下载grizzly-framework.jar库

Maven依赖

<dependency><groupId>org.glassfish.grizzly</groupId><artifactId>grizzly-framework</artifactId><version>2.3.16</version>
</dependency>

或下载地址: http://central.maven.org/maven2/org/glassfish/grizzly/grizzly-framework/2.3.16/grizzly-framework-2.3.16.jar
2014.10.23日刚公布了2.3.17版,地址见: 
https://maven.java.net/content/repositories/releases/org/glassfish/grizzly/grizzly-framework/2.3.17/grizzly-framework-2.3.17.jar
也能够用这个版本号。

server端:

1)创建Echo过滤器

Echo过滤器负责把接收到的消息(无论其类型)原样返回给Grizzly连接。
import java.io.IOException;import org.glassfish.grizzly.filterchain.BaseFilter;
import org.glassfish.grizzly.filterchain.FilterChainContext;
import org.glassfish.grizzly.filterchain.NextAction;public class EchoFilter extends BaseFilter{/*** 仅处理读操作,当消息到来时进行处理* @param ctx  处理的上下文* @return 下一个动作*/@Overridepublic NextAction handleRead(FilterChainContext ctx) throws IOException{// Peer address用于无连接的UDP连接final Object peerAddress = ctx.getAddress();final Object message = ctx.getMessage();System.out.println("Server received: " + message);ctx.write(peerAddress, message, null);return ctx.getStopAction();}
}

2)server初始化代码
全部的server过滤器链都准备好,開始初始化并启动server。
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.logging.Logger;import org.glassfish.grizzly.filterchain.FilterChainBuilder;
import org.glassfish.grizzly.filterchain.TransportFilter;
import org.glassfish.grizzly.nio.transport.TCPNIOTransport;
import org.glassfish.grizzly.nio.transport.TCPNIOTransportBuilder;
import org.glassfish.grizzly.utils.StringFilter;public class EchoServer {private static final Logger logger = Logger.getLogger(EchoServer.class.getName());public static final String HOST = "localhost";public static final int PORT = 7777;public static void main(String[] args) throws IOException{// 用FilterChainBuilder创建过滤器链FilterChainBuilder filterChainBuilder = FilterChainBuilder.stateless();// 加入TransportFilter。它负责从连接中读数据,并写数据到连接filterChainBuilder.add(new TransportFilter());// 字符串过滤器StringFilter负责缓冲和字符串之间的转换filterChainBuilder.add(new StringFilter(Charset.forName("UTF-8")));// 过滤器EchoFilter负责把接收到的消息原样返回给连接filterChainBuilder.add(new EchoFilter());// 创建TCP传输final TCPNIOTransport transport = TCPNIOTransportBuilder.newInstance().build();transport.setProcessor(filterChainBuilder.build());try{// 绑定传输,開始对主机+端口进行监听transport.bind(HOST, PORT);// 開始传输transport.start();logger.info("Press any key to stop the Echo server...");System.in.read();} finally{logger.info("Stopping transport...");// 停止传输servertransport.shutdown();logger.info("Stopped transport...");}}
}

执行Echoserver:
java -classpath grizzly-framework.jar EchoServer

client:

1)创建client过滤器

client过滤器负责重定向server的响应到标准输出。

要注意,client过滤器须要FilterChainContext消息

import java.io.IOException;import org.glassfish.grizzly.filterchain.BaseFilter;
import org.glassfish.grizzly.filterchain.FilterChainContext;
import org.glassfish.grizzly.filterchain.NextAction;public class ClientFilter extends BaseFilter{/*** 仅处理读操作。当消息到来时进行处理* @param ctx  处理的上下文* @return 下一个动作*/@Overridepublic NextAction handleRead(final FilterChainContext ctx) throws IOException{// 从上下文得到字符串消息,过滤器链仅仅使用了字符串过滤器StringFilterfinal String serverResponse = ctx.getMessage();System.out.println("Server echo: " + serverResponse);return ctx.getStopAction();}
}

2)client代码
简单的client,向Echoserver发送消息并等待响应。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.logging.Logger;import org.glassfish.grizzly.Connection;
import org.glassfish.grizzly.Grizzly;
import org.glassfish.grizzly.filterchain.FilterChainBuilder;
import org.glassfish.grizzly.filterchain.TransportFilter;
import org.glassfish.grizzly.nio.transport.TCPNIOTransport;
import org.glassfish.grizzly.nio.transport.TCPNIOTransportBuilder;
import org.glassfish.grizzly.utils.StringFilter;import ch.echo.server.EchoServer;public class EchoClient {private static final Logger logger = Grizzly.logger(EchoClient.class);public static void main(String[] args) throws IOException,ExecutionException, InterruptedException, TimeoutException{Connection connection = null;// 用FilterChainBuilder类创建过滤器链FilterChainBuilder filterChainBuilder = FilterChainBuilder.stateless();// 加入传输过滤器,它负责从连接读数据并向连接写数据filterChainBuilder.add(new TransportFilter());// 加入字符串过滤器,它负责缓冲和字符串之间的转换filterChainBuilder.add(new StringFilter(Charset.forName("UTF-8")));// 加入client过滤器,他负责把server响应重定向到标准输出filterChainBuilder.add(new ClientFilter());// 创建TCP传输final TCPNIOTransport transport = TCPNIOTransportBuilder.newInstance().build();transport.setProcessor(filterChainBuilder.build());try{// 启动传输transport.start();// 异步执行。连接到serverFuture<Connection> future = transport.connect(EchoServer.HOST, EchoServer.PORT);// 等待连接操作的完毕connection = future.get(10, TimeUnit.SECONDS);assert connection!=null;System.out.println("Ready...(\"q\" to exit");final BufferedReader inReader = new BufferedReader(new InputStreamReader(System.in));do{final String userInput = inReader.readLine();if(userInput==null || "q".equals(userInput))break;connection.write(userInput);} while(true);} finally{// 关闭client连接if(connection!=null)connection.close();// 停止传输transport.shutdownNow();}}
}

执行Echoclient:
java -classpath grizzly-framework.jar EchoClient

已经通过測试,程序执行的非常完美。


http://www.jmfq.cn/news/5211091.html

相关文章:

  • 建设监督网站首页/优秀的营销策划案例
  • 网站开发会用到定时器功能/百度一下搜索引擎大全
  • 海淀深圳网站建设公司/app软件下载站seo教程
  • 济南网络有限公司/北京seo助理
  • 济阳网站建设公司/免费刷赞网站推广免费
  • 兄弟网站制作/百度搜索引擎的使用方法
  • 咋做抽奖网站/重庆优化seo
  • 各类东莞微信网站建设/招商外包公司
  • 专做日租的网站/网站流量统计分析报告
  • 哪里有做网站的平台/如何去除痘痘有效果
  • 安徽住房和城乡建设厅网站首页/百度托管运营哪家好
  • 福州餐饮网站建设/厦门百度竞价
  • 代码做网站图片怎么插/快速排名精灵
  • 做网站效果怎么样/提高网站排名
  • ui设计师作品集网站/新网站seo
  • 软件商店vivo官方下载/怎么给网站做优化
  • 江门网站建设套餐/百度搜索关键词
  • 深圳市国外网站建设服务机构/营销失败案例分析
  • 阳江网站建设公司/重庆网站seo外包
  • 室内设计网站参考/互联网优化是什么意思
  • 做网站后用浏览量百度给钱/设计网页
  • 网站 建设 价格表/寻找客户的12种方法
  • 做外贸网站赚钱吗/青岛关键词排名提升
  • 权威发布公众号封面/枫林seo工具
  • 南京建设银行公积金查询网站/全网引流推广 价格
  • 网站备案 营业执照/交换友情链接
  • 大兴模版网站开发公司哪家好/北京seo服务商
  • 在线销售网站设计文献/郑州官网网络营销外包
  • 导购网站免费推广/军事新闻俄乌最新消息
  • 网站建设兼容移动端/免费大数据网站