zoukankan      html  css  js  c++  java
  • 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.在服务器端通过普通的输出流,把读取到内存的数据写入文件中
    文件上传原理图解

    文件上传客户端代码

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

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

  • 相关阅读:
    SuperMap房产测绘成果管理平台
    SuperMap产权登记管理平台
    Android adb shell am 的用法(1)
    由浅入深谈Perl中的排序
    Android 内存监测和分析工具
    Android 网络通信
    adb server is out of date. killing...
    引导页使用ViewPager遇到OutofMemoryError的解决方案
    adb logcat 详解
    How to send mail by java mail in Android uiautomator testing?
  • 原文地址:https://www.cnblogs.com/tushao/p/14176650.html
Copyright © 2011-2022 走看看