JAVA学习第六十三课 — 关于客户端服务端 && URL类 & URLConnection
来源:互联网 发布:中岛美雪知乎 编辑:程序博客网 时间:2024/06/07 05:18
常见的客户端和服务端
客户端:
浏览器:IE:弹窗口,猎豹:弹窗口,多标签,争强效果
服务端:
服务器:TomCat:1.处理请求 2.给予应答
想让TomCat为我们工作,那么java写的相关类类必须实现interface Serverlet
浏览器强大之处就在于解析能力,众多格式,都可以解析
服务端和客户端原理
自定义服务端:
public static void main(String[] args) throws IOException {ServerSocket ss = new ServerSocket(9090);//Tomcat是8080Socket 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();}
使用已有的客户端IE,了解客户端给服务端发送的什么请求?
请求行: 请求方式 /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,在百度地址栏搜索javaURL url = new URL(strurl);System.out.println("Protocol:"+url.getProtocol());//获取主机协议System.out.println("Host:"+url.getHost());//获取主机名System.out.println("Port:"+url.getPort());//获取端口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
特点:
该结构的软件,客户端和服务端都需要编写,开发成本高,维护麻烦
好处:
客户端在本地可以分担一部分运算。360杀毒,游戏的3D效果都是在本地运算
2.B/S :browser / server(浏览器,服务端)
特点:
该结构的软件,只开发服务端,客户端直接由浏览器代替
开发成本相对低,维护更为简单
缺点:所有运算都是在服务器
- JAVA学习第六十三课 — 关于客户端服务端 && URL类 & URLConnection
- URL的通信连接---java URLConnection类
- URL,URLConnection类
- Java网络编程URL&URLConnection
- [疯狂Java]网络:URL、URLConnection
- 5.Java Networking: URL + URLConnection
- 关于java.net.URLConnection
- java之URL(URL,URLConnection)实例
- java URL类、URLConnection类读取html或xml信息
- URL URLConnection
- java URL以及UrlConnection使用解析
- 黑马程序员 java IO URL URLConnection
- Java网络编程URL与URLConnection
- Java网络编程(URL与URLConnection)
- java url和urlConnection的简单介绍
- java URL和URLConnection的例子
- Java实现多线程下载 URL以及URLConnection
- Java 网络编程1--url 和urlconnection
- HDU1789Doing Homework again(贪心)
- 链表反转,合并和查倒数第几个的值。
- 类似QQ聊天界面,ListView的item显示不同布局
- C#设计模式之访问者模式(Vistor Pattern)
- mysql命令 导出表结构和数据 和存储过程
- JAVA学习第六十三课 — 关于客户端服务端 && URL类 & URLConnection
- 【二分图|最大匹配】POJ-1469 COURSES
- 482 C. Game with Strings
- Android如何支持多种屏幕
- 设计模式初探2——观察者模式(Observer Pattern)
- c#序列化与反序列化概述
- Spring注解@Component、@Repository、@Service、@Controller区别
- 482 B. Interesting Array
- rst 格式文档阅读