黑马程序员-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基础测试题

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 黑马程序员——Java基础测试题 第1题:以下代码哪个是正确的?为什么?   a. byte...
  • liu007004
  • liu007004
  • 2015年01月16日 12:49
  • 1437

黑马程序员——Java基础---练习题

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- Java基础---练习题 1.写出程序结果class Demo { public stat...
  • liu007004
  • liu007004
  • 2015年01月19日 16:35
  • 704

黑马程序员——网络编程(Socket)

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
  • bxy19921025
  • bxy19921025
  • 2015年01月30日 16:56
  • 400

java网络编程基础知识

java网络编程基础知识 一、网络基本概念 1、计算机网络,就是把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统,从而使众多的计算机可以方便地互相传递信息,...
  • wfgeqgeq
  • wfgeqgeq
  • 2011年09月19日 19:24
  • 3383

黑马程序员--Java基础面试题整理

------- android培训、java培训、期待与您交流! Java面试题整理(自己学习过程中整理的重点题目,为面试做准备) 编程基础 1.(面试题): ...
  • wwj101004
  • wwj101004
  • 2014年10月31日 23:09
  • 822

传智 刘意 2015年Java基础视频-深入浅出精华版 笔记 day24~day26(2016年4月26日13:11:30)

day24 1.多线程(JDK5之后的Lock锁的概述和使用)   Lock:           void lock(): 获取锁。           void unlock():释放锁。 ...
  • juliantem
  • juliantem
  • 2016年04月15日 00:40
  • 5031

Java基础之网络编程知识点总结

网络编程----Java语言涵盖的领域很广,对于网络方面,java也是相当棒的,java也是可以完成网络通讯的功能的...
  • u011460827
  • u011460827
  • 2014年12月01日 22:00
  • 1751

黑马程序员_我的Linux基础整理笔记

Linux Linux文件目录和分区 文件目录: /:根目录 /root:存放root用户的相关文件 /home:存放普通用户的相关文件 /bin:存放普通用户的可执行命令 /sbin:...
  • zhengzhongjie1990
  • zhengzhongjie1990
  • 2014年07月05日 17:08
  • 1691

黑马程序员—零基础到面试——全过程分享

文章来源:黑马程序员,黑马论坛
  • heima_271
  • heima_271
  • 2014年08月25日 23:38
  • 958

黑马程序员--【阳哥笔记】Java基础之笔记系列(全)

------- android培训、java培训、期待与您交流! ---------- 【阳哥笔记】Java基础之笔记系列(全) http://bbs.itheima.com/thread-20...
  • MH_LZX001
  • MH_LZX001
  • 2015年10月20日 21:25
  • 583
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员-java基础网络编程(其它)
举报原因:
原因补充:

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