zoukankan      html  css  js  c++  java
  • [NIO]用dawn发送接收HTTP请求

    HTTP协议的下层使用的是tcp。所以我们建立一个tcp连接就能发送接收http请求。dawn底层使用了nio。可是经过dawn的封装之后,我们在编写代码的时候,就和使用普通的堵塞式socket一样

    ,不须要关注nio的api。

    能够把我们的精力放在业务逻辑的处理上。举比例如以下。下例的功能就是取回baidu首页:

    package zhmt.dawn.nio;
    
    import java.nio.charset.Charset;
    
    import zhmt.dawn.nio.buffer.ScalableDirectBuf;
    import kilim.Pausable;
    import kilim.Scheduler;
    import kilim.Task;
    
    public class SimpleHttp extends Task {
    	public static void main(String[] args) {
    		Scheduler sch = new Scheduler();
    		sch.start();
    
    		SimpleHttp task = new SimpleHttp();
    		task.startOn(sch);
    	}
    
    	/**
    	 * 自己要清楚。这段代码是在调度器中运行的
    	 */
    	@Override
    	public void execute() throws Pausable, Exception {
    		//创建buffer
    		ScalableDirectBuf buf = ScalableDirectBuf.allocateFromTlsCache();
    
    		//准备http请求数据。这里是訪问首页
    		byte[] req = "GET / HTTP/1.0
    
    ".getBytes();
    		buf.wbytes(req, 0, req.length);
    
    		//创建连接
    		TcpClientChannel ch = new TcpClientChannel("www.baidu.com", 80, false);
    
    		//发送http请求
    		ch.writeAll(buf);
    
    		//接收全部响应数据,直到收到EOF,由于这里用的是HTTP1.0,所以,非常快就能收到EOF
    		int n = ch.readSome(buf);
    		while (n >= 0) {
    			n = ch.readSome(buf);
    		}
    
    		//把结果转成字符串。并打印
    		String ret = buf.rstr((int) buf.readable(), Charset.forName("utf8"));
    		System.out.println("===========================");
    		System.out.println(ret);
    		System.out.println("===========================");
    
    		//释放buffer
    		buf.release();
    		//关闭连接
    		ch.close();
    	}
    }
    

    这个程序,非常直观。我就不多解释了。也能够到github下载源代码:

    https://github.com/zhmt/dawn/blob/master/examples/zhmt/dawn/nio/SimpleHttp.java


    下一篇。我们写个简单的服务,一个简单的聊天室server。

  • 相关阅读:
    女孩提出分手的N种理由
    Attribute应用,简化ANF自定义控件初始化过程
    关于Web的动态页面与静态页面分开的想法.
    .Net面试题
    算法题,不用递归,构造树型
    花两个小时,做了个分页控件
    事件应用,为系统提供扩展功能
    绘制半透明的图片
    Tile Studio简介(转载)
    Thinking in Java 摘录笔记
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/7161184.html
Copyright © 2011-2022 走看看