14、python网络编程之Socket

      最后更新:2022-04-14 17:51

      Python 网络编程套接字

      首先,什么是插座?

      Socket 是 Socket 的另一个名称 。在应用层面,插座是连接TCP/IP社区的中间软件的抽象层。它是一组接口。在设计模式中,事实上,索克特是一个正面模型。复杂的TCP/IP组隐藏在Socket界面下。对用户来说,所需要的只是一套简单的接口。让我们请Socket帮我们整理数据以符合指定的协议。

      所以,我们不必加入tcp/udp协议, 而套座已经为我们密封了, 我们要做的就是遵守套座规则, 而这个技术自然是基于tcp/udp标准。

      在这里插入图片描述

      袜子是1970年代在加州大学伯克利分校发明的,作为BSD Unix版本的Unix的一部分。因此,插座也被称为“伯克利索科特”或“BSD索科特”。最初,插座的用意是连接在同一主机上运行的许多程序。程序间通信或ICPC是这一术语的另一个术语。有两种(或所谓的两种种族)基于文件和网络。

      AF_UNIX 是基于文件类型的套接字 。

      AF_INET 是基于网络类型的套接字 。

      二、套接字工作流程

      1. 使用插座和TCP的工作流程流量

      在这里插入图片描述

      服务器客户端初始化 Socket 。然后它就被绑在港口(bind)上。听端口是一个闪亮的光亮。接受区块是一个呼叫 。等待客户端连接。在现阶段,如果客户创建了套接字,之后,连接到服务器上。如果连接成功,然后在客户端和服务器之间建立连接。客户要求提供数据。服务器终端接收和处理请求。然后向客户发送答复数据。客户端读取数据,最后关闭连接,一次交互结束。

      服务端
      客户端

      先启动服务器, 再启动客户端, 然后检查结果 。

      2. 通过套接接字根据 udp 协议进行的工作流量

      乌德普协议和tcp协议在以下几个方面有不同:

      • 不需要建立链接
      • upp协议是书面书写,tcp协议是一种基于链接的流程协议。

      这就是我们如何模仿套接字 使用DUP协议。

      服务端
      客户端

      运行结果

      三. TCP远程指挥

      服务端
      客户端

      运行结果

      四、Tcp贴贴标签问题

      什么是粘包?

      在tcp协议中,通过向接收方运送许多包裹,发送者的效率更高。作为一种乐观的技术,使用了Nagle算法。它将许多小切口的数据合并成一个巨大的数据块。然后进行封包。这使得接收方更难区分数据边界。我们以前称它为粘糊糊的麻袋这是一个需要科学产品的时刻。因此,面向流动的通信无法保障边界。

      如何解决粘包?

      我们可以看到粘胶袋的问题在于 接收者不知道数据界限数据无法分离成合法数据。作为回应,我们可解决粘胶袋问题,就如何解包数据向接受者提供指示。此函数决定数据与数据之间的边框。我们现在可以把头挂在数据信封上数据在头信息中说明。如果该数据中的信息量是,这使接收器能够根据头信息解构数据包。分列所收到的数据。

      这是自决条约,不是条约。在这个过程中,应当提及的是,头信息长度必须固定。它帮助解决接收方的解决方案。同时,应注意头信息(json、泡菜等)的先后顺序,以便更容易分解。

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

          热门文章

          文章分类