zoukankan      html  css  js  c++  java
  • JAVA学习第六十三课 — 关于client服务端 && URL类 & URLConnection

    常见的client和服务端

    client:

          浏览器:IE:弹窗体,猎豹:弹窗体。多标签,争强效果

    服务端:

          server:TomCat:1.处理请求 2.给予应答

    想让TomCat为我们工作。那么java写的相关类类必须实现interface Serverlet

    浏览器强大之处就在于解析能力,众多格式,都能够解析

    服务端和client原理

    自己定义服务端:

    public static void main(String[] args) throws IOException {
    		
    		ServerSocket ss = new ServerSocket(9090);//Tomcat是8080
    
    		Socket socket = ss.accept();
    		InputStream in = socket.getInputStream();
    		
    		System.out.println("ip : "+socket.getInetAddress().getHostAddress());
    		
    		byte[] buf = new byte[1024];
    		
    		int len = in.read(buf);
    		String text = new String(buf,0,len);
    		System.out.println(text);
    		PrintWriter out = new PrintWriter(socket.getOutputStream(),true);
    		out.println("你好");
    		socket.close();
    		ss.close();
    	}


    使用已有的clientIE,了解client给服务端发送的什么请求?

    请求行: 请求方式 /1.html 请求资源路径:http协议版本号

    请求消息头:属性名:属性值

    请求体

    模拟一个浏览器获取信息

    	public static void main(String[] args) throws IOException {
    		
    		Socket s = new Socket("192.168.1.1",8080);//向tomcat获取。浏览器信息
    		
    		PrintWriter out = new PrintWriter(s.getOutputStream(),true);
    		
    		out.println("GET / HTTP /.....");
    		out.println("....");
    		out.println("....");
    		out.println("....");
    		out.println("....");
    		out.println("....");
    		
    		InputStream in = s.getInputStream();
    		byte[] buf = new byte[1024];
    		int len = in.read(buf);
    		String line = new String(buf,0,len);
    		
    		System.out.println(line);//得到就是本地写的html代码
    		s.close();
    	}

    得到的应答:

    应答行:http的协议版本号 应答状态码 应答状态描写叙述信息

    应答消息属性。 属性名: 属性值

    应答体:->上述的html源代码

    PS:浏览器太难写了,所以众多厂商都是应用原有的IE的内核


    类URL

    URL 代表一个统一资源定位符,它是指向互联网“资源”的指针。

    资源能够是简单的文件或文件夹,也能够是对更为复杂的对象的引用。比如对数据库或搜索引擎的查询

    每一个URL都是URI,但不是每一个URI都是URL

    	public static void URL_Demo() throws MalformedURLException {
    	
    		String strurl = "http://127.0.0.1:8080/myhtml/1.html?

    name=wang"; //http://www.baidu.com/baidu?word=java,在百度地址栏搜索java URL url = new URL(strurl); System.out.println("Protocol:"+url.getProtocol());//获取主机协议 System.out.println("Host:"+url.getHost());//获取主机名 System.out.println("Port:"+url.getPort());//获取port System.out.println("File:"+url.getFile());//获取文件 System.out.println("Path:"+url.getPath());//获取路径部分 System.out.println("Query:"+url.getQuery());//获取查询部分 }

    Protocol:http
    Host:127.0.0.1
    Port:8080
    File:/myhtml/1.html?name=wang
    Path:/myhtml/1.html
    Query:name=wang

    public static void URL_Demo() throws IOException {
    	
    		String strurl = "http://127.0.0.1:8080/myhtml/1.html?

    name=wang"; URL url = new URL(strurl); InputStream in = url.openStream();//打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream。 /* * 原理: * openConnection() * 返回一个 URLConnection 对象。它表示到 URL 所引用的远程对象的连接。

    * URLConnection conn = url.openConnection(); * System.out.println(connection); * 底层封装完了关于url的http的解析方式。这个对象就是java内置的能够解析详细协议的对象+socket * URLConnection类中 * 1.String str = conn.getHeaderField("Contend-Type"); * System.out.println(str);//应答一个文本类型的消息 * 然后就能够依据应答的结果。推断文本是何类型,依据指定的解析器,解析数据 * 实际上用的是Socket,加协议 * 2.InputStream in = conn.GetInputStream();相同得到1.html的应答体 * * 所以url.openStream()的原理就是: * URLConnection conn = url.openConnection(); * InputStream in = conn.GetInputStream(); */ byte[] buf = new byte[1024]; int len = in.read(buf); String str = new String(buf,0,len); System.out.println(str);//得到1.html的应答体,url帮助解析成html源代码 in.close(); }


    常见的网络架构
    1.C/S: client / server (客户端。服务端)

    早期:

        VC++,VB都是做C/S

    特点:

        该结构的软件,client和服务端都须要编写,开发成本高。维护麻烦

    优点:

        client在本地能够分担一部分运算。360杀毒,游戏的3D效果都是在本地运算

    2.B/S :browser / server(浏览器,服务端)

    特点:

         该结构的软件,仅仅开发服务端,client直接由浏览器取代

         开发成本相对低。维护更为简单

    缺点:全部运算都是在server

  • 相关阅读:
    CodeForces 681D Gifts by the List (树上DFS)
    UVa 12342 Tax Calculator (水题,纳税)
    CodeForces 681C Heap Operations (模拟题,优先队列)
    CodeForces 682C Alyona and the Tree (树上DFS)
    CodeForces 682B Alyona and Mex (题意水题)
    CodeForces 682A Alyona and Numbers (水题,数学)
    Virtualizing memory type
    页面跳转
    PHP Misc. 函数
    PHP 5 Math 函数
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/6826292.html
Copyright © 2011-2022 走看看