JavaSE学习笔记 ---网络编程

帅比萌擦擦* 提交于 2019-12-01 21:53:39
前期:
OSI网络模型:(7层)
物理层:为数据链路层提供设备支持(网口)
数据链路层:网络层的数据
网络层:网络连接功能、路由器的分配
传输层:网络数据之间的传输
会话层:两台设备之间进行一次会话(一次网络请求)
表示层:数据传输的格式或者其他功能
应用层:用户操作(网络地址)
后期:
TCP/IP:(4层)
网络层:
网络互联层:
传输层:
应用层:

java中的网络通讯:
实现网络通讯的基础:
1、IP地址(电脑设备或者其他设备)
        在网络世界中,每一台电脑都有对应的IP地址(唯一标识)
        查看:Win键 + r 输入cmd 输入ipconfig
        本机默认地址(本地回环地址):127.0.0.1(通过这个地址可以实现一台电脑的自我访问)
        默认的主机名:localhost
2、端口号(应用程序在电脑中的地址)
        范围:0 ~ 65535 其中:0~1024一般用于描述电脑系统应用
3、网络协议(TCP UDP HTTP)
        数据传输协议:规定某种数据格式

InetAddress类:
    注意:因为InewAddress的构造方法的修饰符是默认的,所以不能通过构造方法new对象
    获取本地的InewAddress对象:
    InewAddress.getLocalHost();
    获取本机IP地址的InetAddress类
InetAddress.getLocalHost()
    获取指定IP地址的InetAddress类
InetAddress.getByName("192.168.1.120")
    接收端获得发送消息来的IP地址
String ip = packet.getAddress().getHostAddress();
    接收端获得消息内容:
byte[] data = packet.getData();

Java网络协议:实际上就是一种数据协议
1、TCP(打电话):
    需要双方建立连接,需要3次握手,可靠的协议
2、UDP(送快递):
    不需要建立连接,是不可靠协议
3、HTTP:
    无状态协议

Socket:套接字
    帮助我们完成数据的传递,底层已经封装好了IO流操作,数据传递:流
    
UDP代码流程:
接收端:
    1、定义socket对象
    2、定义byte数组用于接收数据
    3、定义DatagramSocket接收整个包
    4、接收
    5、解析数据
    6、关闭socket

发送端:
    1、建立socket
    2、确定数据
    3、确定IP地址以及端口号
    4、发送
    5、关闭socket

TCP代码流程:必须是在双方建立连接的情况下进行通讯
接收器:
    1、创建ServerSocket对象
    2、等待客户端连接
    3、获取流
    4、操作流获取数据

发送端:
    1、创建socket对象
    2、确定数据
    3、获取流

HTTP协议:
    请求:相当于一次网络访问
    请求行:GET  /S  HTTP/1.1
                方法 路径 HTTP协议版本
    请求头(消息报文):
        接收的文本类型:Accept:  text/html
        text/html:mime类型(大类型/小类型)
        接收的语言类型:Accept-Language  zh-CN(中文)
        浏览器内核:User-Agent:
        支持的压缩文件类型:Accept-Encoding:
        防盗链(当前网页来自哪个网址):Referer
    请求体(请求正文):
    
    响应:服务器向客户端
    响应行:
        HTTP/1.1  200 OK(CRLF)
        状态码:
            200:成功
            404:找不到该网页
            503:服务器出错
    响应头:
        文本类型:Content-Type:text/html; charset = utf-8
    响应体:返回当前网页的源码

HTTP代码流程
    1、确定目标网址 URL
       
 URL url = new URL("http://img0.imgtn.bdimg.com/it/u=1352823040,1166166164&fm=214&gp=0.jpg");
    2、打开网络连接
        
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    3、获取流
        
InputStream in = connection.getInputStream();
    4、操作流获取数据


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!