网络编程-Socket

      最后更新:2022-01-28 12:40

      一、OSI七层协议

      先上图,HTTP和HTTPS在应用层
      在这里插入图片描述

      二、Socket

      1、什么是Socket

      • 网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket。Socket通常用来实现客户方和服务方的连接。Socket是TCP/IP协议的一个十分流行的编程界面,一个Socket由一个IP地址和一个端口号唯一确定
      • Socket所支持的协议种类也不光TCP/IP、UDP,因此两者之间是没有必然联系的。在Java环境下,Socket编程主要是指基于TCP/IP协议的网络编程
      • socket连接就是所谓的长连接,客户端和服务器需要互相连接,理论上客户端和服务器端一旦建立起连接将不会主动断掉的,但是有时候网络波动还是有可能的
      • Socket偏向于底层。一般很少直接使用Socket来编程,框架底层使用Socket比较多

      2、 Socket通讯的过程

      • 基于TCP
        服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。在这时如果有个客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束
      • 基于UDP
        UDP 协议是用户数据报协议的简称,也用于网络数据的传输。虽然 UDP 协议是一种不太可靠的协议,但有时在需要较快地接收数据并且可以忍受较小错误的情况下,UDP 就会表现出更大的优势。客户端只需要发送,服务端能不能接收的到我不管

      2.1、TCP协议Socket代码实现:

      1. 服务端
      1. 客户端
      1. 先运行服务端,在运行客户端 。测试结果发送成功
      • 客户端发送消息
        在这里插入图片描述
      • 服务端监听收到消息
        在这里插入图片描述

      2.2、UDP协议Socket代码实现:

      1. 服务端
      1. 客户端
      1. 先运行服务端,在运行客户端 。测试结果发送成功

      在这里插入图片描述

      3、Socket的常用类

      类名 用于 作用
      Socket TCP协议 Socket类同时工作于客户端和服务端,所有方法都是通用的,这个类三个主要作用,校验包信息,发起连接(Client),操作流数据(Client/Server)
      ServerSocket TCP协议 ServerSocket表示为服务端,主要作用就是绑定并监听一个服务器端口,为每个建立连接的客户端“克隆/映射”一个Socket对象,具体数据操作都是通过这个Socket对象完成的,ServerSocket只关注如何和客户端建立连接
      DatagramSocket UDP协议 DatagramSocket 类用于表示发送和接收数据报包的套接字
      DatagramPacket UDP协议 DatagramPacket 类用来表示数据报包,数据报包用来实现无连接包投递服务
      InetAddress IP+端口号 Java提供了InetAddress类来代表互联网协议(IP)地址,InetAddress类没有提供构造器,而是提供了如下两个静态方法来获取InetAddress实例
      InetSocketAddress IP+端口号 在使用Socket来连接服务器时最简单的方式就是直接使用IP和端口,但Socket类中并未提供这种方式,而是靠SocketAddress的子类InetSocketAddress来实现 IP 地址 + 端口号的创建,不依赖任何协议

      本文由 在线网速测试 整理编辑,转载请注明出处。

          热门文章

          文章分类