网络编程概述

网络

  • 概念

    • 网络即将不同区域的电脑连接到一起, 组成局域网、城域网或广域网。把分布在
      不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络
      系统,从而使众多的计算机可以方便地互相传递信息,共享硬件、软件、数据信息等资
      源。
  • 功能

    • 资源共享
    • 信息传输与集中处理
    • 均衡负荷与分布处理
  • 网络通信协议
    • 计算机网络中实现通信必须有一些约定即通信协议,对速率、传输代码、代码结构、传
      输控制步骤、出错控制等制定标准
  • 网络通信接口
    • 为了使两个结点之间能进行对话,必须在它们之间建立通信工具(即接口),使彼此之间能进行信息交换。接口包括两部分:
      • 硬件装置: 实现结点之间的信息传送;
      • 软件装置: 规定双方进行通信的约定协议

网络分层

  • 概念
    • 由于结点之间联系很复杂,在制定协议时,把复杂成份分解成 一些简单的成份,再将
      它们复合起来。最常用的复合方式是层次方式,即同层间可以通信、上一层可以调用下
      一层,而与再下一层不发生关系。
  • 封装
    • 从上往下,加入相关层的协议控制信息
  • 拆封
    • 获取数据,从下往上,去除相关层的协议的控制信息

网络编程概述

  • 总结
  • 网络:将不同区域的的计算机连接到一起
  • [局域网 广域网]
  • IP 地址:Internet Protocol
    • 确定网络上的计算机的绝对位置
    • 端口(port) : 区别于计算机上其他软件
      • 端口是两个字节 0-65535 共 65535 个
      • 同一个协议 端口号不能重复 , 不同协议下的端口号是可以重复
      • 建议 1024 以下的 端口不要使用 预留给一些知名厂商使用

传输协议

  • TCP
    • transfer control protocol
    • 一种面向连接(连接导向)的、可靠的、基于字节流的传输层(Transport layer)通信协议的点到点的通信
    • TCP 三次握手(Three-way Handshake)
    • 面向连接、安全、可靠,效率低 (同步)。。。打电话
  • UDP
    • UserDatagramProtocol
    • 一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务
    • 非面向连接、不安全、数据可能丢失 、效率高(异步)。。。发短信

网络编程类的简单了解

  • InetAddress
    • 封装计算机的 ip 地址和 DNS( Domain Name System,域名系统) ,没有端口。
    • getByName(String host):在给定主机名的情况下确定主机的 IP 地址
    • getLocalHost():返回本地主机
  • InetSocketAddress
    • 包含端口,用于 socket 通信的
    • getAddress() 返回 InetAddress 对象
    • getPort() 返回端口
      • getHostName() 返回域名
  • 网络资源定位
    • URI
    • Uniform resource identifier:相对位置
    • 统一资源标识符, 用来唯一的标识一个资源
    • URL
    • Uniform Resource Locator:绝对位置
    • 统一资源定位器。统一资源定位符,由 4 部分组成:协议 、
      存放资源的主机域名、资源文件名和端口号
  • 爬虫简单了解
    • 通过URL.openStream方法获取输入流,然后将流内数据写入文件

UDP编程

开发使用到的两个类 DatagramSocket 与DatagramPacket

开发步骤:
客户端:
1 创建客户端:DatagramSocket 类+ 指定端口
2 准备数据
3 打包成 DatagramPacket + 服务器地址以及端口
4 发送
5 释放资源
字节数组
服务器端:
1 创建客户端:DatagramSocket 类+ 指定端口
2 准备接收容器:字节数组,封装 DatagramPacket
3 打包成 接收数据
4 分析
5 释放资源

TCP编程

  • 套接字
    • 套接字是一种进程间的数据交换机制。
    • 这些进程既可以在同一机器上,也可以在通过网络连接的不同机器上。换句话说,套接字起到通信端点的作用。
    • 单个套接字是一个端点,而一对套接字则构成一个双向通信信道,使非关联进程可以在本地或通过网络进行数据交换。一旦建立套接字连接,数据即可在相同或不同的系统中双向或单向发送,直到其中一个端点关闭连接

面向连接 请求+响应
requst + response
使用的类 Socket + ServerSocket

客户端 : socket
服务端 : ServersSocket

开发步骤:
2) 、服务器:
1创建服务器 + 指定端口
ServerSocket server = new ServerSocket(8888);
2等待客户端连接
Socket socket = server.accept();
(阻塞式接收)
3分析接收数据
[输入与输出流的解析实现 数据数据传递]

3) 、客户端:
1连接服务器: 创建客户端 +指定服务器地址 +端口
Socket socket = new Socket(“127.0.0.1”,8888) ;
2发送数据