一,软件架构
  1,网络编程入门 
    C\S架构,全称:Client\Server 客户端和服务器架构
    B\S架构,全称:Browser\Server 浏览器和服务器架构
    ★,两种架构各有优势,无论哪种都离不开网络的支持,B\S会成为趋势
    网络编程:在一定协议下,编写实现两台计算机通信的程序
  2,网络通信协议 
    概述:
      计算机必须遵守的规则
    4层分层的模型: 
      物理层,数据链路层     底层网络协议
      网络层         IP (因特网互相协议)
      传输层           TCP\UDP
      应用层         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
      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
    java.net.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