Python简单多客户端套接字服务器

Python简单多客户端套接字服务器,python,Python,我想知道如何在Python2.7中创建一个简单的套接字服务器,它可以同时处理和添加/接受多个客户端。我不想使用扭曲、线程或任何库;只有Python和套接字。我环顾了一下SoF(stackoverflow,这是一件事吗?),发现有人问同样的问题,但没有得到明确的答案 如果您想知道为什么我需要这样做,那是因为我想创建一个简单的数据转发器,将客户机数据转发到另一台服务器。我认为一个非常简单的示例向我展示Server.py、Client1.py和Client2.py正是我所需要的。同样,这只是一个非常简

我想知道如何在Python2.7中创建一个简单的套接字服务器,它可以同时处理和添加/接受多个客户端。我不想使用扭曲、线程或任何库;只有Python和套接字。我环顾了一下SoF(stackoverflow,这是一件事吗?),发现有人问同样的问题,但没有得到明确的答案

如果您想知道为什么我需要这样做,那是因为我想创建一个简单的数据转发器,将客户机数据转发到另一台服务器。我认为一个非常简单的示例向我展示Server.py、Client1.py和Client2.py正是我所需要的。同样,这只是一个非常简单的例子,没有线程,没有扭曲,没有库

我希望你能帮助我,我对Python还相当陌生,我觉得这个项目将帮助我站稳脚跟,我从示例中学到了很多东西

考虑使用(适用于python 3.3及更高版本)

Asyncio是单线程并发编程的新python标准:

该模块提供了使用协程编写单线程并发代码、通过套接字和其他资源多路复用I/O访问、运行网络客户端和服务器以及其他相关原语的基础结构

本文档提供了几个示例:


如果您还没有准备好迁移到Python3,那么可以使用asyncio for Python2的移植。这两个模块之间存在一些差异,如下所示:

  • 将asyncio替换为trollius(或将import trollius用作asyncio)
  • 取代…的收益率。。。以(…)的收益率
  • 将来自[]的收益率替换为来自(无)的收益率
  • 在协同程序中,将返回res替换为提升返回(res)

python 2.7上单线程并发编程的其他解决方案:

  • :一个基于协同路由的Python网络库,使用
  • :内置异步套接字库()

如果你想让服务器一次处理多个客户端,你将无法避免使用多线程。如果我用PHP做过,我敢肯定我可以用Python做!因此,当服务器处理来自一个客户机的请求时,第二个客户机请求到达,您希望发生什么?如果您只有一个线程,那么任何后续到达的请求都必须排队等待一次处理一个线程-这样做是可能的,但您的用户会讨厌您。如果您想完全老一套,使用
选择
或任何库
您指的是第三方库还是标准库?因此,如果您想使用
sockets
,您需要在python中导入socket
。如果您这样做了,您还可以导入SocketServer,我认为这个模块将提供一些您可以使用的东西:我正在使用Python2.7,我计划保持这种方式。检查我将要对OP@RoyalScripters编辑。