• 2020.12.18 网络编程基础,网络编程三要素,TCP通信,Socket类,ServerSocket


    网络基础
    软件架构
    C/S架构:客户端与服务器端的一种架构,将任务合理的分配给客户和服务器端,就是有两端
    B/S架构:浏览器和服务器端的架构,简化了系统开发和维护(常用)

    B/S架构和C/S架构的区别

    • C/S架构是基于局域网的,B/S架构是基于广域网的。
    • 硬件环境不同:C/S建立在专用网络上,对数据安全性要求高,数据存于本地,类似于QQ
    • 对程序的架构不同,C/S权限多次校验,B/S更倾向于优化速度
    • 用户接口不同:C/S架构在Windows平台上面跑,B/S建立在浏览器上面
      两者相同点
      都是基于网络编程,就是一定是在协议之下完成的,实现两台计算机的通信程序

    网络通信协议
    网络通信协议:是计算机必须尊从的一种协议,协议对数据的传输格式。传输步骤都要统一规定
    TCP/IP:TCP(传输控制协议)和IP(英特网互联协议),定义了计算机如何联网。

    协议分类
    TCP协议:控制传输协议,面向链接的通信协议,数据传输之前就先建立链接
    三次握手
    在数据发送准备阶段,客户端和服务器端通过三次交互,保证链接的可靠性
    一、客户端向服务器端发送请求链接
    二、服务器端返回给客户端信息,同意链接
    三、客户端再次向服务器端发送确认信息,表示已经连接好了
    目的:保证通过链接进行数据传输,另一端就是我们要找的对象

    网络编程三要素:
    1.需要协议:计算机必须遵守协议
    2.IP地址:只有得到了地址才能发送数据,不然不能确认发送给谁
    3.端口号:端口号就是唯一表示设备的进程(常用8080)
    利用协议+IP地址+端口号三要素,就可以表示网络中任意一个进程,呢吗进程之间就可以利用这个表示进行操作

    TCP通信
    目的:实现两台计算机之间的交互,通信两端要严格区分客户局端和服务器端
    两端通信步骤
    1.先启动服务器端,等待客户端链接
    2.客户端需要注定链接服务器端,链接成功才能通信,服务器端口不可以主动链接客户端

    实现TCP通信需要实现的两个类

    • 客户端:创建Socket对象,创建之后就相当于创建了客户端,向服务器端发送链接请求,服务器端会送一个请求表示已经链接成功,连着就建立了通信。
    • 服务器端:创建ServerSocket对象,创建之后就相当于,开启了一个服务,等待客户链接

    Socket类
    Socket类,实现客户端套接字,套接字指的是两台设备之间通讯端点。
    构造方法
    Socket(String host,int port);创建一个Socket对象
    host:写IP地址,写自己发信息给自己,写别人的就是自己发信息给别人,为null就是本机
    host:主要是用来喝服务器端的端口号。客户端拿着端口号去找服务器,相同的才能建立链接
    成员方法
    socket.getInputStream();---->套接字输入流;返回一个InputStream
    socket.getOutputStream();--->套接字输出流;返回一个OutputStream
    socket.close();--->关闭Socket

    ServerSocket类
    serverSocket实现了服务器端的套接字,该对象等待通过网络请求
    构造方法
    ServerSocket(int port);--->使用构造方法获得ServerSocket对象
    post:当post喝客户端的post相同的时候就建立连接
    成员方法
    server.accept();--->监听并接收链接,返回一个Socket对象,用于实现通信
    客户端代码演示:

    服务器端代码演示*

    注意:read方法都是读取的对面写给自己的,write都是写给对面的

    文件上传案例
    步骤:
    1.在客户端中,通过普通输入流,从硬盘中读取数据到客户端内存中
    2.在客户端中通过Socket对象的输出流,把从文件中读取到的数据写给服务器端
    3.在服务器端通过Socket对象的输入流,把客户端传过来的数据写道服务器内存中
    4.在服务器端通过普通的输出流,把读取到内存的数据写入文件中
    文件上传原理图解

    文件上传客户端代码

    服务器端读取客户端传入的数据并写入文件中代码

    注意:是客户端端口号抓取服务器端端口号,端口号就能把信息穿过去

  • 相关阅读:
    异步任务----django-celery
    signal函数
    shell脚本字符显示颜色
    echo输出到文件
    windows下opencv安装
    模板
    下载vs地址
    关联容器 map
    构造函数初始化列表
    assert() fflush()
  • 原文地址:https://www.cnblogs.com/tushao/p/14176650.html
Copyright © 2020-2023  润新知