黑马程序员-java基础网络编程(其它)

原创 2015年07月11日 09:04:44

——- android培训java培训、期待与您交流! ———-


一、获得http请求信息

GET / HTTP/1.1
Host: 127.0.0.1:11000
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8

解释:
GET / HTTP/1.1 : 请求方式/协议名称/协议版本
Host: 127.0.0.1:11000 : 主机IP地址:端口号
Connection: keep-alive : 客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。
Accept : 可以接收的文件类型。
User-Agent : User Agent中文名为用户代理,是Http协议中的一部分,属于头域的组成部分,User Agent也简称UA。
它是一个特殊字符串头,是一种向访问网站提供你所使用的浏览器类型及版本、操作系统及版本、浏览器内核、等信息的标识。
通过这个标识,用户所访问的网站可以显示不同的排版从而为用户提供更好的体验或者进行信息统计;
Accept-Encoding : 接收文件编码。
Accept-Language : 接收语言

代码块

练习:获得http请求信息

package com.itheima4;

import java.io.InputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * ServerDemo对象
 * @author jjy
 * 
 */
public class ServerDemo{

    public static void main(String[] args)throws Exception{

        ServerSocket ss = new ServerSocket(11000);

        Socket s = ss.accept();

        String ip = s.getInetAddress().getHostAddress();

        System.out.println("ip地址为;"+ip);


        InputStream in = s.getInputStream();

        byte[] buf = new byte[1024];

        int len  = in.read(buf);
        /**
         * HTTP请求头:
            GET / HTTP/1.1
            Host: 127.0.0.1:11000
            Connection: keep-alive
            Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,;q=0.8
            User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36
            Accept-Encoding: gzip,deflate,sdch
            Accept-Language: en-US,en;q=0.8
         */
        System.out.println(new String(buf,0,len));

        PrintWriter out = new PrintWriter(s.getOutputStream());

        out.println("客户端你好");

        //s.close();

        //ss.close();
    }
}

二、使用URL和URLConnection实现浏览器功能

URL
定义:类 URL 代表一个统一资源定位符,它是指向互联网“资源”的指针。资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用。
常用方法:

常用方法如下:
Socket(String host, int port) -> 创建一个流套接字并将其连接到指定主机上的指定端口号。
URL(String spec) -> 根据 String 表示形式创建 URL 对象。
getFile() -> 获取此 URL 的文件名。
getHost() -> 获取此 URL 的主机名(如果适用)。
getPath() -> 获取此 URL 的路径部分。
getPort() -> 获取此 URL 的端口号。
getProtocol() -> 获取此 URL 的协议名称。
getQuery() -> 获取此 URL 的查询部分。
openConnection() -> 返回一个 URLConnection 对象,它表示到 URL 所引用的远程对象的连接。

URLConnection
定义:抽象类 URLConnection 是所有类的超类,它代表应用程序和 URL 之间的通信链接。此类的实例可用于读取和写入此 URL 引用的资源。
常用方法:

常用方法如下:
getInputStream() -> 返回从此打开的连接读取的输入流。
getOutputStream() -> 返回写入到此连接的输出流。

代码块

练习:使用URL和URLConnection实现浏览器功能

package com.itheima4;

import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;




/**
 * URLConnectionDemo对象
 * @author jjy
 * 
 * 应用层:传输层+响应头
 * 
 * 
 * SocketAddress:IP地址+端口号
 * 
 * 最大连接数:ServerSocket(int port,int backlog)
 */
public class URLConnectionDemo{

    public static void main(String[] args)throws Exception{

        URL url = new URL("http://127.0.0.1:8080/myweb/demo.html");

        URLConnection conn = url.openConnection();

        System.out.println(conn);

        InputStream in = conn.getInputStream();

        byte[] buf = new byte[1024];

        int len = in.read(buf);

        System.out.println(new String(buf,0,len));
    }
}

运行结果:
sun.net.www.protocol.http.HttpURLConnection:http://127.0.0.1:8080/myweb/demo.html


这是我的主页


欢迎光临

这是我的主页
这是我的主页
这是我的主页
这是我的主页
这是我的主页
这是我的主页


黑马程序员_Java基础_网络编程(下)_24

------- android培训、java培训、期待与您交流!----------   导读:TCP上传图片,TCP-客户并发登陆,浏览器客户端-自定义服务端,浏览器客户端-Tomcat服务端,自定...

黑马程序员_Java基础_网络编程相关小项目

一、网络编程(TCP-上传图片) [java] view plaincopy /*  需求:上传图片。  */      /*  客户端:  1.服务端点。  2.读取客户端已...

黑马程序员---JAVA基础---网络编程(十五)

一、网络概述 1、网络模型 OSI参考模型                                TCP/IP 应用层                                     ...

黑马程序员——Java基础---网络编程

第一讲     概述  1、网络模型:OSI参考模型和TCP/IP参考模型 图示:         一般来说开发处于传输层和网际层,应用层为:FTP和HTTP协议等,传输层为...

黑马程序员——Java基础——网络编程

网络编程
  • twa42
  • twa42
  • 2015年08月31日 15:04
  • 131

黑马程序员_Java基础_网络编程_客户端服务端数据传输,交互,客户端请求服务原理,自定义浏览器,URL统一资源定位符

网络编程在实际应用当中,并不只是简单的单线程应用,因为客户端和服务端之间经常存在多个客户端同时访问一个服务端的情况,服务端必须能够同时接收多个服务端的访问,这就要用到多线程技术。本节总结主要给出网络编...

黑马程序员——Java基础----网络编程

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-  第一讲   概述     常见的应用程序通讯的步骤如图所示: 图   23-0 一、网络模型: ...

黑马程序员——Java基础---网络编程

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——- Java网络编程课前思考 1. 什么是TCP/IP协议? 2. TCP/IP有哪两种传输协议,各有什么特点...

黑马程序员——Java基础---网络编程

——- android培训、java培训、期待与您交流! ———-网络模型 OSI参考模型 TCP/IP参考模型 网络通讯要素 IP地址 端口号 ...

黑马程序员_Java基础:网络编程总结

Java语言是在网络环境下诞生的,它是第一个完全融入网络的语言,虽然不能说它是对支持网络编程做得最好的语言,但是必须说是一种对于网络编程提供良好支持的语言。这归功于java的自身优势。...
  • gzj_vip
  • gzj_vip
  • 2015年08月05日 14:46
  • 427
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员-java基础网络编程(其它)
举报原因:
原因补充:

(最多只允许输入30个字)