---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------
服务端多线程的问题:如何定义多线程?只要明确客户端在服务端执行的代码即可,将代码放到run中。浏览器发送给服务器(我自己定义的day2404)的东西。
http://192.168.0.145:8080/myweb/demo.html
协议 主机名 端口号 资源路径 资源
GET / HTTP/1.1 (1.1和1.0版本):Get:Httpd请求消息头
Accept: text/html, application/xhtml+xml,
Accept-Language: zh-CN
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0; MALNJS)
Accept-Encoding: gzip, deflate//新浪将数据压缩后,发送给tomcat,然后再解压缩
Host: 192.168.0.145:10012//要访问的主机和端口
DNT: 1
Connection: Keep-Alive
自定义浏览器(TCP客户端),访问tomcat。浏览器发送一大堆东西(响应头消息和数据主体,三次握手)给服务端,服务端会返回给浏览器数据(应答消息头和数据主体),浏览器会解析客户端放松是数据(浏览器在应用层,会将消息头解析掉,只显示用户可以看的信息)。
客户端浏览器发送消息头给服务器,服务器也要给浏览器发送消息。
http://192.168.0.145:8080/myweb/demo.html
协议 主机名 端口号 资源路径 资源
GET / HTTP/1.1 (1.1和1.0版本):Get:请求头
Accept: text/html, application/xhtml+xml,
Accept-Language: zh-CN
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6
.0; MALNJS)
Accept-Encoding: gzip, deflate//新浪将数据压缩后,发送给tomcat,然后再解压缩
Host: 192.168.0.145:10012//要访问的主机和端口
DNT: 1
Connection: Keep-Alive
URL 类 URL 代表一个统一资源定位符, 是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
通俗将: Internet文件在网上的地址, 基本URL包含模式(或称协议)、服务器名称(或IP地址)。
该类有什么用:
1.不用再切割字符串来获取信息了。
2.openConnection()方法返回URLConnection对象,它封装了Socket,所以可以当做Socket使用。URLConnection内部封装了地址和目的,在内部封装了连接动作,就不用写Socket了,并且带了协议。在应用层。
URL u = new URL("http://www.baidu.com/");
URLConnection uc = u.openConnection();
System.out.println(uc);.
InputStream in = uc.getInputStream();
byte[] buf = new byte[1024];
int len=-1;
while((len=in.read(buf))!=-1){
System.out.println(new String(buf,0,len));//没有响应头,在应用层被拆包解析了
}
* 封装了截取字符串的方法。
*构造方法:
*1.URL(String spec)
*2.URL(String protocol, String host, int port, String file)
*常用方法:
*getFile()
*getHost()
*getPath()
*getPort():没有指定端口,返回-1
*getProtocol()
*getQuery():getFile()后面的参数 用的频率很高 使用参数的形式想服务端发送数据。
*URLConnection openConnection() 获取远程对象的连接。例如获取百度的连接
*URLConnection内部封装了地址和目的,在内部封装了连接动作,就不用写Socket了,并且带了协议。在应用层。 *
*getInputStream():有此方法,也说明了内部封装了Socket.在应用层,它会它响应头给解析了,值保留信息正文主体。 *
*RUL有一个方法:openInputStream()
*其实:就是openConnection.getInputStream();先连接
/*必须掌握
URLConnection openConnection()//调用此方法,
返回一个 URLConnection 对象,它表示到 URL 所引用的远程对象的连接。
每次调用此 URL 的协议处理程序的 openConnection 方法都打开一个新的连接。
抽象类URLConnection:它代表应用程序和 URL 之间的通信链接
返回从此打开的连接读取的输入流。
OutputStream getOutputStream()//内部封装了Socket
返回写入到此连接的输出流。
URL类中的方法: InputStream openStream() 封装了:openConnection().getInputStream(),但是没有URLConnection里面的方法灵活。因为它可以进行更对操作,解析头等。 打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream。
浏览器(客户端)给tomcat(服务端)发送请求(GET/myweb/demo.html http/1.1),请求访问demo.html, tomcat返回给浏览器(应答信息和demo.html),浏览器在传输层(所有数据都展示)收到数据,并向上传递给应用层(展示数据主体)。应用层的把HTTP协议识别的数据给拆包去掉了, 把数据主体(dmeo.html)返回了。
抽象类 URLConnection 是所有类的超类,它代表应用程序和 URL 之间的通信链接。
此类的实例可用于读取和写入此 URL 引用的资源。
对影响到远程资源连接的参数进行操作。 与资源交互;查询头字段和内容。
当定义的Socket()没有参数时,用connect连接上。
Socket:connect(SocketAddress endpoint) 将此套接字连接到服务器。
SocketAddress抽象类,其子类 InetSocketAddress,此类实现 IP 套接字地址(IP 地址 + 端口号)。
主要用于:习惯于将地址和端口一起用时,方便。
ServerSocket :ServerSocket(int port, int backlog)
backlog:就是允许链接的最大端口个数,比如一次只允许10个。
域名解析:
http://192.168.0.145:8080/myweb/demo.html?name=haha&age=30";
http:www.sina.com.cn,那么这个是怎么访问的。sina与192.45.15.54是怎么对应的呢
先找DNS服务器,获取ip地址,然后再用ip地址访问新浪,如果没有设置则默认运行商的dns服务器。