网络编程

一,软件架构
  1,网络编程入门
    CS架构,全称:ClientServer 客户端和服务器架构
    BS架构,全称:BrowserServer 浏览器和服务器架构
    ★,两种架构各有优势,无论哪种都离不开网络的支持,BS会成为趋势
    网络编程:在一定协议下,编写实现两台计算机通信的程序
  2,网络通信协议
    概述:
      计算机必须遵守的规则----》目标是完成数据交换
    4层分层的模型:
      物理层,数据链路层     底层网络协议
      网络层         IP (因特网互相协议)
      传输层           TCPUDP
      应用层         HTTP(https比http更安全一些)
  3,协议分类
    java.net包中包含了相关的类和接口----》提供两种常见的网络协议支持
    1,TCP
      概述:
        面向链接的通信协议。
      特点:
        可以保证数据的安全传输,不丢失。 下载文件,浏览网页等。
      原则:(三层握手)
        1》客户端向服务器发送请求,等待服务器确认
        2》服务器向客户端做出响应,确认请求
        3》客户端再次向服务器发出确认请求,确认连接
    2,UDP
      概述:
        面向无链接的通信协议
      特点:
        传输数据不需要连接,不管对方是否在线,传输速度快,但是容易丢失数据,不可靠的协议。 视频会议,QQ聊天等。
 
二,网络通信的三要素
  1,协议
    如:HTTP,TCP,UDP等
  2,IP
    IPv4 由32位的二进制组成,可组42亿个,每位0-255之间
    IPv6 由128位的十六进制组成,解决了网络资源不够用的问题
    cmd----》控制台 DOS命令:
      1》ipconfig 查询自己的IP地址
      2》ping 空格 IP地址 判断网络是否畅通
  3,端口号
    网络通信的本质是两个进程(应用程序),因此用端口号保证唯一,不重复
    用两个字节表示整数,0-65535之间
    0-1023已被知名网络服务占用了,不能用。
    如:
      服务器端口   80
      MySQL     3306
      Oracle     1521
 
三,TCP通信
  1,要严格区别客户端 client 服务器端 server
  两端通信步骤:
    1》客户端主动连接服务器,连接成功才通信
    2》服务器端一定要先启动
  2,java中提供了两个类来实现TCP程序
    java.net.Socket----》创建Socket对象----》发送请求到服务器----》服务器做出响应----》两者建立通信
    java.net.ServerSocket----》创建ServerSocket对象----》相当于开启一个服务----》用来等待客户端连接
 
四,Socket
  概述:
    此类实现客户端(也可以叫做“套接字”),是两台机器间通信的端点
  构造:
    new Socket(InetAddress address,int port) 创建对象,参数传连接到主机的指定地址,端口号
  方法:
    getInputStream();----》客户端输入流
    getOutputStream();----》客户端输出流
    close();----》关流
    shutdownOutput();----》禁用此客户端的输出流
  使用:
    TCP通信端的客户端向服务器发送请求连接,和服务器进行三次握手,建立逻辑关系
    1,创建客户端Socket对象,封装服务器的IP,端口号
    2,使用Socket对象.getOutputStream(); 获取网络字皆输出流OutputStream对象
    3,使用字节输出流对象.write();给服务器发送数据
    4,使用Socket对象.getInputStream();获取网络字节输入流InputStream对象
    5,使用字节输入流对象.read();读取服务器返回的响应数据
    6,释放资源
 
五,ServerSocket
  概述:
    这个类实现了服务器。 服务器等待通过网络进入的请求。 它根据该请求执行一些操作,然后可能将结果返回给请求者。
  构造:
    new ServerSocket(int port); 绑定一个指定端口号
  方法:
    accept();----》监听并接受到此服务器的连接请求,用于实现客户端通信,阻塞知道建立连接
  使用:
    服务端Server 接收客户端的请求,与客户端建立逻辑关系,并往客户端写回应数据
    1,创建服务器ServerSocket对象,构造方法中绑定端口号
    2,使用ServerSocket对象.accept(); 监听并获得客户端请求 Socket对象
    3,使用Socket对象.getInputStream(); 获取InputStream对象
    4,使用IS对象.read(); 读取客户端发送的请求数据
    5,使用Socket对象.getOutputStream(); 获取OutputStream对象
    6,使用OS对象.write(); 写回应数据
    7,释放资源
原文地址:https://www.cnblogs.com/kide1412/p/10993003.html