【计算机网络】网络编程UDP和TCP的Socket api

      最后更新:2022-05-24 04:21:51 手机定位技术交流文章

      文章目录

      • TCP和UDP区别
      • UDP 套接字
        • DatagramSocket
        • DatagramPacket
        • 使用:回声服务器
          • 服务器代码
            • 服务器的构造函数:
            • 工人开始()
          • 客户端代码
            • 客户端的构造函数
            • 构造请求数据报
            • 全部代码
            • 运行结果
          • 五元组
      • TCP 连接
        • 使用:回声服务器
          • 服务器的代码
            • 服务器的构造函数
            • 工人开始()
              • 多线程处理
              • 线程池处理
          • 客户端的代码
            • 客户端的构造函数
            • 开始客户工作函数 ()

      现在我们来谈谈网络编程, 这是在应用层和传输层之间发生的编程。
      操作系统的核(传输层)提供一套,有时称为。
      该API促进传输与应用层之间的沟通。
      该API分为两部分:TCP和UDP。

      TCP和UDP区别

      在网络传输层上,tcp和UDP都是重要的协议。
      让我们来看看这两个具体的区别。

      TCP UDP 解释
      有连接 无连接 它有联系,它有联系,已经传达了
      eg:打电话
      例如,不连接可发送微信信息。
      可靠传输 不可靠传输 可靠的传输可以显示对方是否收到信息,例如,钉子读数。
      ** 例如,Q,微信。
      面向字节流 面向数据报 字节流:任何大小的数据都可以同时传输。
      只有全部信息才能在数据报告中提供。
      全双工 全双工 完整双双:与双向通信的单一链接
      半双向是指一个链接和单向通信。

      UDP 套接字

      TCP的插座比UDP的要复杂得多。
      UDP 套接字编程主要涉及到一下两个类:
      数据套:一个通用类。
      数据包:UDP最小的传输单位,单一数据报告。

      DatagramSocket

      这一类主要是一个业务类别,负责若干网络方案编制活动。
      数据组数据报告
      套接字文件对应于其中的一个数据套接字对象 。
      这个套接字文件是一张网卡,不是别的
      从Socket 文件中读取信息。 检查网卡 。
      使用网页卡从套接字文件中写入数据 。
      客户端和服务器都使用了数据套套。
      如果需要端口号,请输入您自己的设备端口号。
      如果未指定端口号, 系统将匹配此设备的端口号 。

      DatagramPacket

      这一类别的目标是代表单一的数据报告,这是UDP传输的基本单位。
      数据报告, 或数据组包, 是最后我们发送的东西。

      使用:回声服务器

      这是一个回声服务, 一个信息进来, 和一个信息离开。
      基本上没有商业理由,只是通过插座传送

      服务器代码

      服务器的构造函数:

      1. 要运行 Scoket 网页卡, 我们需要在服务器上显示数据套 。
      2. ** 此数据组必须有一个放置的端口号, ** 等于电话定位( 端口号) 的电话号码。
      3. 此端口号可自定, 此端口号也可自定, 系统可自动传播 。
      4. 由于您自己指定的端口号可能与原始程序的端口号相同, 即异常 Socket Exception, 说明打开一个以上文件的另一个进程, 如果打开了多个文件, 则无法打开 。

      工人开始()

      服务器工作的主要组件

      1. 接收客户端的请求
      2. 根据请求做出相应
      3. 将相应返回给客户端

      下面是具体的操作:

      主要的流程就是:

      receive(Packet receive)---------->Packet receive-------->String receive 传入
      String receive--------->process()--------->String respond 处理
      String respond-------Packet respond---------->send(Packet respond) 传出

      代码注释包括最重要的信息。
      还有一件很容易混为一谈的东西:

      1. 从包装到字符串

      getData - 直线阵列访问
      0 起始的坐标
      GetLength 的长度
      编码方法 utf-8

      1. 从字符串到包装

      makeByte 将字符转换为字节数组
      使用 Get Byte (). Length 等待字节数组长度。
      GetSocketAddress () 在返回前等待IP 地址和端口号 。

      客户端代码

      客户端的构造函数

      在此情况下, 我们必须将数字与服务器的构造函数比较 :

      让我们从一个港口号开始
      端口号指的是计算机上的应用程序, 系统为每个程序/ 进程指定一个端口号。 端口号被指定给单个程序。 一个进程与另一个程序没有相同的端口号 。

      顶端服务器有一个手动端口号码, 但客户端没有。 为什么?

      由于服务器必须随时知道它在哪里,必须人工识别已知的端口号码,以便客户知道它何时提交请求。
      然而,因为客户是客户计算机上的一个程序, 客户计算机上可能有很多程序, 如果我们手工操作端口号码, 我们很可能和另一个程序的端口号码有问题, 所以我们不需要客户的手工输入端口号码。

      构造请求数据报

      所以我们可以提出正式的商务请求, 首先输入字符串, 然后将字符串包装到数据报告里, 然后将套接字送到服务器上 。

      全部代码

      运行结果

      我们可以与一些客户和服务器进行沟通。
      image.png

      五元组

      服务器 客户端
      源IP 服务器自身ip 客户端的自身ip
      源端口号 服务器自身的端口号 客户端供应的端口号
      目标ip 收到的数据报的ip 服务器的ip
      目标端口号 数据收到的港口号 服务器的端口号
      协议类型 UDP UDP

      TCP 连接

      TCp 中的套接字 API 主要包括:
      ServerSocket负责接收客户发来的信息。
      我们字节流的基本单位是套接字。 如果服务器接收到它, 是套接字对象 。
      客户端将套接字对象发送到服务器 。

      使用:回声服务器

      服务器的代码

      服务器的构造函数

      1. 首先,我们需要一个服务器套件 来接管整个服务器
      2. 在大楼功能中,我们希望明确提供服务器端口的服务器端口号。

      工人开始()

      1. 先是建立连接

      我们无法像UDP一样在这里工作,因为TCP协议是附加的。我们等客户连接之后再继续。

      就是类比一下:
      服务器而非客户端启动呼叫 。
      如果客户不答复,就没有联系,也没有持续活动。
      如果客户回应,它们就会连结起来 它们是可行的

      多线程处理

      注意:
      我们可以使用多两次技术为多个客户创建服务器:

      在周期期间,我们开始一条线 独立处理每个客户的信息, 使我们能够完成不止一对事情。

      线程池处理

      我们能够通过汇集线索,比上文描述的许多路线更好地处理它们。

      创建一个线程池
      一次把一条线贴到网上游泳池

      1. 接收和回应服务器和客户信息的主要工作从下一个开始。

      为了接收和回复信息,TCP被与字节流和UDP数据报告不同地转移,正像文件的读写一样。
      过程:

      1. 打开 Socket 的输入和输出流 。
      2. 扫描器用于读取输入流 。
      3. 请处理 。
      4. 要写入输出流, 请使用 printWriter 。
      5. 如果没有请求,服务器连接将被终止 。

      客户端的代码

      客户端的构造函数

      客户的建筑功能仅限于Socket 对象。
      此外,此套接字创建功能的端口号码和 IP 地址与服务器的端口号码和 IP 地址相对应。

      开始客户工作函数 ()

      客户程序与服务器相似 :

      1. 让我们打开 Socket 的输入和输出流 。
      2. 先从键盘中读取请求
      3. 这篇文章是全球之声在线特稿的一部分。
      4. 用扫描仪读出输入流

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/26031.html

          热门文章

          文章分类