Python socket模块与socket.io模块

Python socket模块与socket.io模块,python,sockets,flask,Python,Sockets,Flask,我最近了解了套接字及其与HTTP或AJAX的区别,并通过套接字模块将其设置在一些python应用程序中用于学习目的。我现在研究了在web应用程序中与flask一起使用它们(与以前仅在控制台/终端窗口中运行相比),并注意到几乎所有示例、教程和文档都使用socket.io。为什么呢?它与sockets模块的行为有何不同 (注意:我不想在web应用程序中使用任何JS,只想使用python,因为这是我所熟悉的,我只是提供一个概念证明)sockets和socket.io有一个共同点,它们允许两个应用程序通

我最近了解了套接字及其与HTTP或AJAX的区别,并通过套接字模块将其设置在一些python应用程序中用于学习目的。我现在研究了在web应用程序中与flask一起使用它们(与以前仅在控制台/终端窗口中运行相比),并注意到几乎所有示例、教程和文档都使用socket.io。为什么呢?它与sockets模块的行为有何不同


(注意:我不想在web应用程序中使用任何JS,只想使用python,因为这是我所熟悉的,我只是提供一个概念证明)

sockets
socket.io
有一个共同点,它们允许两个应用程序通过网络直接通信。然而,它们是非常不同的,因为它们在完全不同的网络层上运行

套接字在传输层上定义,允许非常直接的通信方式,避免了更高级别协议的复杂性(但也缺乏功能),如http和在http之上定义的服务。
sockets
库允许您使用这种类型的套接字

socket.io
为JavaScript应用程序定义了软件“sockets”,但由于该库变得非常流行(并且工作得非常好),现在许多语言都有实现。然而,它是在http之上运行的(作为一种可能的传输方式,整个事实要复杂一些)。socket.io中的“sockets”是套接字,因为它们允许直接点对点通信,但它们在更高的抽象级别上运行

至于决定使用哪一种——这取决于你想要传达什么,以及你需要与谁或什么人沟通


为了理解为什么在传输层上运行的东西与在应用层上运行的东西有很大的不同,您可能应该阅读OSI模型

这是否回答了您的问题?您是否知道,套接字的操作级别与您提到的其他事情完全不同?这个问题类似于问“为什么人们使用汽车而不是车轮?”其实不是,因为我所说的问题没有得到回答@lepsch@MisterMiyagi是的,我基本上知道什么是套接字,只是不明白为什么不能使用sockets库而不是socket.io库,或者它们在不同的级别上运行。