常见的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

JAVA学习第六十三课 — 关于client服务端 && URL类 & URLConnection的更多相关文章

  1. JAVA学习第三十三课(经常使用对象API) —迭代器

    数字有非常多用数组存,对象有非常多就要用集合存 可是数组是固定长度的,集合是可变长度的 集合的由来: 对象用来封装特有数据,对象多了须要存储,假设对象个数不确定,就须要使用集合容器来存储 集合的特点: ...

  2. 201671010140. 2016-2017-2 《Java程序设计》java学习第六章

    java学习第六章    本周对与java中的接口,lambda表达式与内部类进行了学习,以下是我在学习中的一些体会:    1.接口: <1>.接口中的所有常量必须是public sta ...

  3. Java 学习(六)

    Java 学习(六) 标签(空格分隔): Java 枚举 JDK1.5引入了新的类型--枚举.在 Java 中它虽然算个"小"功能,却给我的开发带来了"大"方便 ...

  4. JAVA学习第六十二课 — TCP协议练习

    通过练习掌握TCP在进行传输过程中的问题 练习1:创建一个英文大写转换server client输入字母数据,发送给服务端,服务端收到后显示到控制台,并将该数据转成大写返回client,知道clien ...

  5. 别样JAVA学习(六)继承下(2.3)异常下

    1.RuntimeException Exception中有一个特殊的子类异常RuntimeException执行时异常. 假设在函数内容抛出该异常,函数上能够不用声明.编译一样通过. 假设在函数上声 ...

  6. NodeJS学习笔记 进阶 (1)Nodejs进阶:服务端字符编解码&乱码处理(ok)

    个人总结:这篇文章主要讲解了Nodejs处理服务器乱码及编码的知识,读完这篇文章需要10分钟. 摘选自网络 写在前面 在web服务端开发中,字符的编解码几乎每天都要打交道.编解码一旦处理不当,就会出现 ...

  7. Java - PhantomJS + EChartsConvert实现ECharts图片保存到服务端

    1.所需工具 1>phantomjs:官网下载http://phantomjs.org/download.html 国内镜像http://npm.taobao.org/dist/phantomj ...

  8. java基于socket的网络通信,实现一个服务端多个客户端的群聊,传输文件功能,界面使用Swing

    最近在复习java的io流及网络编程.但复习写那些样板程序总是乏味的.便准备写个项目来巩固.想来想去还是聊天项目比较好玩.如果日后完成的比较好自己也可以用(哈哈哈).并且自己后面也要继续巩固java多 ...

  9. java 网络编程基础 TCP/IP协议:服务端ServerSocket;客户端Socket; 采用多线程方式处理网络请求

    1.Java中客户端和服务器端通信的简单实例 Java中能接收其他通信实体连接请求的类是ServerSocket,ServerSocket对象用于监听来自客户端的Socket连接,如果没有连接,它将一 ...

随机推荐

  1. Laravel系列教程一:安装及环境配置

    免费视频教程地址https://laravist.com/series/laravel-5-basic 最近在SF上面看到越来越多的Laravel相关的问题,而作为一个Laravel的脑残粉,本来打算 ...

  2. vue第三方ui使用

    举个例子. http://git.oschina.net/tianyong/we-vue 假如要在项目中使用这套ui. npm npm install we-vue -S 直接安装就行了.不需要下载源 ...

  3. Diamond介绍

    1. Diamond需求背景 我们的异步任务, 定时任务分布在多台服务器上处理, 所有有个配置文件去记录任务-服务器的分配关系.当动态的调整任务分配情况后,需要把工程重新启动, 这样频繁的操作对服务器 ...

  4. Spring AOP实现拦截转发控制

    import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import ...

  5. 用聚合数据API(苏州实时公交API)快速写出小程序

    利用聚合数据API快速写出小程序,过程简单. 1.申请小程序账号 2.进入开发 3.调用API.比如“苏州实时公交”小程序,选择的是苏州实时公交API. 苏州实时公交API文档:https://www ...

  6. OpenERP 搜索过滤: 过去三个月

    解决这个问题的重点在于 relativedelta 的应用 示例代码如下: 1: <!-- filter: last three months --> 2: <filter icon ...

  7. Genymotion 在win10 下的安装

    首先我在Genymotion官网上并没有找到他的安装程序.据说是在注冊后,通过邮件里的链接下载,结果也没有看到.最后详细在哪下的,忘了收藏.我下的是 genymotion-2.5.3-vbox.exe ...

  8. 什么是Pro*C/C++,嵌入式SQL,第一个pro*c程序,pro*c++,Makefile,Proc增删改查

     1 什么是Pro*C/C++ 1.通过在过程编程语言C/C++中嵌入SQL语句而开发出的应用程序 2.什么是嵌入式SQL 1.在通用编程语言中使用的SQL称为嵌入式SQL 2.在SQL标准中定义 ...

  9. Flume、Kafka、Storm结合

    Todo: 对Flume的sink进行重构,调用kafka的消费生产者(producer)发送消息; 在Sotrm的spout中继承IRichSpout接口,调用kafka的消息消费者(Consume ...

  10. radiusd cisco限速问题

    http://puck.nether.net/pipermail/cisco-bba/2011-February/001349.html