演示客户端和服务端
1,
客户端:浏览器(telnet)
服务端:自定义
浏览器其实就是一个客户端(浏览器客户端-自定义服务端)
注意:本机测试,自定义客户端中必须在服务户端打印出对方ip,IE中才可以读出”客户端你好”
扩展:
Win中远程工具,连接网络中的任意一台主机.Telnet[也是一个客户端]
2,
客户端:浏览器(telnet)
服务端:Tomcat
Tomcat是纯java编写的一个服务端软件,他里面其实就是封装了Socket.
简单截图,没必要细看……..
3,
客户端:自定义
服务端:Tomcat服务器
思考,浏览器在访问服务器时,给服务端发送了什么数据?
在自定义的服务端中,将客户端中发给服务端的数据读出来.
HTTP请求消息头
Accept-Encoding:gzip,deflate(提高效率,支持gzip压缩)
请求数据体和请求数据头,中间要有一个空行.标准..
自己按照上面,分析.自己做一个ie客户端,访问以下Tomcat服务器
注意,Connection:”Keep-Alive”的话,服务器会保持连接,不会立刻关闭.
简单优化,自定义浏览器:
应答消息头出现,是因为,我们走的是传输层….而ie走的是应用层,他已经把响应消息头处理了
深层优化,自定义浏览器:
java.net
类 URL
类 URL 代表一个统一资源定位符,它是指向互联网“资源”的指针。资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用,例如对数据库或搜索引擎的查询。
扩展URI也是资源定位符,URI的范围比URL大.
getFile() | |
getHost() | |
getPath() | |
int | getPort() |
getProtocol() | |
getQuery() |
注意:
给力方法: (自动帮你连接URL,,,,,,)玩3G也用的上
openConnection() | |
openStream() |
openStream() 方法,就是:openConnection().getInputStream()
一般,分开写,因为,URLConnection中会提供更多方法.来操作……
java.net
类 URLConnection
直接已知子类:
HttpURLConnection, JarURLConnection
带着协议封装Socket,去掉响应头.直接跨到应用层……
getInputStream() |
域名解析:
小知识扩展:
在创建ServerSocket时,构造方法,中还有个参数------Backlog[控制在线客户端]